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

 

posted @ 2015-02-01 13:57  AnyDrew  阅读(309)  评论(0编辑  收藏  举报