首页 > 代码库 > 无刷新的批量图片上传插件.NET版

无刷新的批量图片上传插件.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

 

无刷新的批量图片上传插件.NET版