无刷新的批量图片上传插件.NET版
啥都不说,先上效果图:
这是一个网上的第三方组件,原版是php的,我用.NET重写了图片上传的处理,下面贴上代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Text; namespace CFUpload.CFUpload { /// <summary> /// Upload 的摘要说明 /// </summary> public class Upload : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //定义文件保存目录 String save_path = context.Server.MapPath("./files/"); //定义文件保存url String save_url = "/CFUpload/files/"; //定义允许文件的扩展名 String[] ext_arr = {"gif", "jpg", "jpeg", "png", "bmp"}; //定义最大允许的文件大小 int max_size = 1024 * 500; HttpFileCollection files = context.Request.Files; //有文件存在 if (files.Count > 0) { HttpPostedFile file = files["Filedata"]; String file_name = file.FileName; int file_size = file.ContentLength; String file_ext = Path.GetExtension(file_name); //检查文件名 if (!ChecPickExt(file_ext)) { context.Response.Write("返回错误: 请选择文件"); context.Response.End(); } //检查目录 if (!Directory.Exists(save_path)) { context.Response.Write("返回错误: 上传目录不存在("+save_path+")"); context.Response.End(); } //检查是否已上传 if (File.Exists( Path.Combine(save_path , file_name) )) { context.Response.Write("返回错误: 文件已存在"); context.Response.End(); } //检查文件大小 if (file_size > max_size) { context.Response.Write("返回错误: 上传文件大小超过限制。最大"+(max_size/1024)+"KB"); context.Response.End(); } context.Response.Write("上传的文件:" + file_name); context.Response.Write("文件类型:" + file_ext); context.Response.Write("文件大小:" + file_size); //创建文件夹 String directPath = Path.Combine(save_path, DateTime.Now.ToString("yyyy-MM-dd")); Directory.CreateDirectory(directPath); //存在则创建,不存在则不创建 String realFileName = DotNet.Utilities.Encrypt.Md5(file_name); String realFilePath = directPath + "/" + realFileName + file_ext; //保存文件 file.SaveAs(realFilePath); //提示上传成功 context.Response.Write("<br />上传成功</br >"); } } /// <summary> /// 在服务器端判断文件后缀 /// </summary> /// <param name="ext"></param> /// <returns></returns> public bool ChecPickExt(String ext) { if (ext.ToLower() == ".bmp") return true; if (ext.ToLower() == ".jpg" || ext.ToLower() == ".jpeg") return true; if (ext.ToLower() == ".png") return true; if (ext.ToLower() == ".gif") return true; return false; } public bool IsReusable { get { return false; } } } }
处理过程在原版基础上稍作处理,针对.NET环境下作了优化,供大家参考 。
Demo下载:http://pan.baidu.com/s/1dDvS9XJ