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

界面简单粗糙,将就将就,代码复制过去应该可以直接用
这里写图片描述
前台代码就这点:

<div class="Upload">
            <asp:FileUpload ID="FileUpload" runat="server" />
        </div>
        <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" />

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

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

//上传图片 返回是否保存成功 保存的路径 缩略图路径
        public bool Upload(ref string imgSavePath, ref string vimgSavePath)
        `这里写代码片`{
            //获取上传的文件名
            string fileName = this.FileUpload.FileName;
            fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + fileName;
            string route ="http://192.168.2.168:8006";//你的服务器地址
            //如果服务器不存在该名文件夹 就生成一个
            if (!Directory.Exists(route + "Images/"))
            {
                Directory.CreateDirectory(route + "Images/");
            }
            //获取物理路径(图片保存的位置)
            String path = Server.MapPath("~/Images/");
            //判断上传控件是否上传文件
            if (FileUpload.HasFile)
            {
                //判断上传文件的扩展名是否为允许的扩展名".gif", ".png", ".jpeg", ".jpg" ,".bmp"
                String fileExtension = System.IO.Path.GetExtension(fileName).ToLower();
                String[] Extensions = { ".gif", ".png", ".jpeg", ".jpg", ".bmp" };
                for (int i = 0; i < Extensions.Length; i++)
                {
                    if (fileExtension == Extensions[i])
                    {
                        //进行上传图片操作
                        this.FileUpload.PostedFile.SaveAs(path + fileName);
                        imgSavePath = path + fileName;//原图保存路径
                        vimgSavePath = path + "th_" + fileName;//缩略图保存路径
                        imgsize(imgSavePath, vimgSavePath);//生成缩略图
                        return true;
                    }
                }
            }
            return false;
        }

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

public void imgsize(string imgSavePath, string vimgSavePath)
        {
            //本例中假定了两个变量:

            String src = imgSavePath;//源图像文件的绝对路径
            String dest = vimgSavePath; //生成的缩略图图像文件的绝对路径

            int thumbWidth = 100;    //要生成的缩略图的宽度
            int thumbHeight = 100;   //要生成的缩略图的高度
            System.Drawing.Image image = System.Drawing.Image.FromFile(src); //利用Image对象装载源图像

            //接着创建一个System.Drawing.Bitmap对象,并设置你希望的缩略图的宽度和高度。
            int srcWidth = image.Width;
            int srcHeight = image.Height;
            Bitmap bmp = new Bitmap(thumbWidth, thumbHeight);

            //从Bitmap创建一个System.Drawing.Graphics对象,用来绘制高质量的缩小图。
            System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);

            //设置 System.Drawing.Graphics对象的SmoothingMode属性为HighQuality
            gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            //下面这个也设成高质量
            gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

            //下面这个设成High
            gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

            //把原始图像绘制成上面所设置宽高的缩小图
            System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, thumbWidth, thumbHeight);
            gr.DrawImage(image, rectDestination, 0, 0, srcWidth, srcHeight, GraphicsUnit.Pixel);

            //保存图像,大功告成!
            bmp.Save(dest);

            //最后别忘了释放资源
            bmp.Dispose();
            image.Dispose();
        }

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

//保存上传的图片到数据库
        protected void btnSave_Click(object sender, EventArgs e)
        {
            var imgSavePath = "";//保存图片路径
            var vimgSavePath = "";//缩略图路径
            var result = Upload(ref imgSavePath, ref vimgSavePath);
            if (result)
            {
                //图片上传完成  进行写数据库操作
                Response.Write("<script>alert('已保存')</script>");
                this.labImg.Text = "原图保存路径:" + imgSavePath;
                this.labVimg.Text = "缩略图保存路径:" + vimgSavePath;
            }
        }

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

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值