找回密码
 会员注册
查看: 167|回复: 0

【ASP】FileUpload上传图片并保存数据库

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962992
发表于 2024-2-29 08:25:55 | 显示全部楼层 |阅读模式

界面简单粗糙,将就将就,代码复制过去应该可以直接用

这里写图片描述

前台代码就这点:

  1. <div class="Upload">
  2. <asp:FileUpload ID="FileUpload" runat="server" />
  3. </div>
  4. <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" />
复制代码

接下来是后台,首先确定明确一下我们的逻辑关系:简单点说,触发“保存”的点击事件时,第一是把图片放到服务器的指定位置,第二是把图片的位置(路径)存入到数据库中…`

上传图片的方法(“保存”的点击事件时触发时调用该方法)

  1. //上传图片 返回是否保存成功 保存的路径 缩略图路径
  2. public bool Upload(ref string imgSavePath, ref string vimgSavePath)
  3. `这里写代码片`{
  4. //获取上传的文件名
  5. string fileName = this.FileUpload.FileName;
  6. fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + fileName;
  7. string route ="http://192.168.2.168:8006";//你的服务器地址
  8. //如果服务器不存在该名文件夹 就生成一个
  9. if (!Directory.Exists(route + "Images/"))
  10. {
  11. Directory.CreateDirectory(route + "Images/");
  12. }
  13. //获取物理路径(图片保存的位置)
  14. String path = Server.MapPath("~/Images/");
  15. //判断上传控件是否上传文件
  16. if (FileUpload.HasFile)
  17. {
  18. //判断上传文件的扩展名是否为允许的扩展名".gif", ".png", ".jpeg", ".jpg" ,".bmp"
  19. String fileExtension = System.IO.Path.GetExtension(fileName).ToLower();
  20. String[] Extensions = { ".gif", ".png", ".jpeg", ".jpg", ".bmp" };
  21. for (int i = 0; i < Extensions.Length; i++)
  22. {
  23. if (fileExtension == Extensions[i])
  24. {
  25. //进行上传图片操作
  26. this.FileUpload.PostedFile.SaveAs(path + fileName);
  27. imgSavePath = path + fileName;//原图保存路径
  28. vimgSavePath = path + "th_" + fileName;//缩略图保存路径
  29. imgsize(imgSavePath, vimgSavePath);//生成缩略图
  30. return true;
  31. }
  32. }
  33. }
  34. return false;
  35. }
复制代码

生成缩略图的方法(图片上传成功调用该方法)

  1. public void imgsize(string imgSavePath, string vimgSavePath)
  2. {
  3. //本例中假定了两个变量:
  4. String src = imgSavePath;//源图像文件的绝对路径
  5. String dest = vimgSavePath; //生成的缩略图图像文件的绝对路径
  6. int thumbWidth = 100; //要生成的缩略图的宽度
  7. int thumbHeight = 100; //要生成的缩略图的高度
  8. System.Drawing.Image image = System.Drawing.Image.FromFile(src); //利用Image对象装载源图像
  9. //接着创建一个System.Drawing.Bitmap对象,并设置你希望的缩略图的宽度和高度。
  10. int srcWidth = image.Width;
  11. int srcHeight = image.Height;
  12. Bitmap bmp = new Bitmap(thumbWidth, thumbHeight);
  13. //从Bitmap创建一个System.Drawing.Graphics对象,用来绘制高质量的缩小图。
  14. System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
  15. //设置 System.Drawing.Graphics对象的SmoothingMode属性为HighQuality
  16. gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  17. //下面这个也设成高质量
  18. gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
  19. //下面这个设成High
  20. gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  21. //把原始图像绘制成上面所设置宽高的缩小图
  22. System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight);
  23. gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel);
  24. //保存图像,大功告成!
  25. bmp.Save(dest);
  26. //最后别忘了释放资源
  27. bmp.Dispose();
  28. image.Dispose();
  29. }
复制代码

最后上“保存”的触发代码

  1. //保存上传的图片到数据库
  2. protected void btnSave_Click(object sender, EventArgs e)
  3. {
  4. var imgSavePath = "";//保存图片路径
  5. var vimgSavePath = "";//缩略图路径
  6. var result = Upload(ref imgSavePath, ref vimgSavePath);
  7. if (result)
  8. {
  9. //图片上传完成 进行写数据库操作
  10. Response.Write("<script>alert('已保存')</script>");
  11. this.labImg.Text = "原图保存路径:" + imgSavePath;
  12. this.labVimg.Text = "缩略图保存路径:" + vimgSavePath;
  13. }
  14. }
复制代码

存数据库不用我说了吧
后记:不足之处请大家见谅,希望通过相互间交流来完善彼此这里写代码片


来源:https://blog.csdn.net/Vagrenter/article/details/79236148
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 01:42 , Processed in 0.513040 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表