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

2018-02-05 10:32:37来源:网络收集作者:咖啡不加糖人点击

分享

界面简单粗糙,将就将就,代码复制过去应该可以直接用
【ASP】FileUpload上传图片并保存数据库
前台代码就这点:




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


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


//上传图片 返回是否保存成功 保存的路径 缩略图路径
public bool Upload(ref string imgSavePath, ref string vimgSavePath)
`这里写代码片`{
//获取上传的文件名
string fileName = this.FileUpload.FileName;
fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + fileName;
//获取当前方案的绝对路径
string route = System.AppDomain.CurrentDomain.BaseDirectory;
//如果方案中不存在该名文件夹 就生成一个
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("");
this.labImg.Text = "原图保存路径:" + imgSavePath;
this.labVimg.Text = "缩略图保存路径:" + vimgSavePath;
}
}

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


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台