行 1: <%@ webhandler Language="C#" class="Upload" %>
行 2:
行 3: /**
行 4: * KindEditor ASP.NET
行 5: *
行 6: * 本ASP.NET程序是演示程序,建议不要直接在实际项目中使用。
行 7: * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
行 8: *
行 9: */
行 10:
行 11: using System;
行 12: using System.Collections;
行 13: using System.Web;
行 14: using System.IO;
行 15: using System.Globalization;
行 16: using LitJson;
行 17:
行 18: public class Upload : IHttpHandler
行 19: {
行 20: private HttpContext context;
行 21:
行 22: public void ProcessRequest(HttpContext context)
行 23: {
行 24: String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1);
行 25:
行 26: //文件保存目录路径
行 27: String savePath = "../attached/";
行 28:
行 29: //文件保存目录URL
行 30: String saveUrl = aspxUrl + "../attached/";
行 31:
行 32: //定义允许上传的文件扩展名
行 33: Hashtable extTable = new Hashtable();
行 34: extTable.Add("image", "gif,jpg,jpeg,png,bmp");
行 35: extTable.Add("flash", "swf,flv");
行 36: extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
行 37: extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
行 38:
行 39: //最大文件大小
行 40: int maxSize = 1000000;
行 41: this.context = context;
行 42:
行 43: HttpPostedFile imgFile = context.Request.Files["imgFile"];
行 44: if (imgFile == null)
行 45: {
行 46: showError("请选择文件。");
行 47: }
行 48:
行 49: String dirPath = context.Server.MapPath(savePath);
行 50: if (!Directory.Exists(dirPath))
行 51: {
行 52: showError("上传目录不存在。");
行 53: }
行 54:
行 55: String dirName = context.Request.QueryString["dir"];
行 56: if (String.IsNullOrEmpty(dirName)) {
行 57: dirName = "image";
行 58: }
行 59: if (!extTable.ContainsKey(dirName)) {
行 60: showError("目录名不正确。");
行 61: }
行 62:
行 63: String fileName = imgFile.FileName;
行 64: String fileExt = Path.GetExtension(fileName).ToLower();
行 65:
行 66: if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize)
行 67: {
行 68: showError("上传文件大小超过限制。");
行 69: }
行 70:
行 71: if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)
行 72: {
行 73: showError("上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。");
行 74: }
行 75:
行 76: //创建文件夹
行 77: dirPath += dirName + "/";
行 78: saveUrl += dirName + "/";
行 79: if (!Directory.Exists(dirPath)) {
行 80: Directory.CreateDirectory(dirPath);
行 81: }
行 82: String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
行 83: dirPath += ymd + "/";
行 84: saveUrl += ymd + "/";
行 85: if (!Directory.Exists(dirPath)) {
行 86: Directory.CreateDirectory(dirPath);
行 87: }
行 88:
行 89: String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
行 90: String filePath = dirPath + newFileName;
行 91:
行 92: imgFile.SaveAs(filePath);
行 93:
行 94: String fileUrl = saveUrl + newFileName;
行 95:
行 96: Hashtable hash = new Hashtable();
行 97: hash["error"] = 0;
行 98: hash["url"] = fileUrl;
行 99: context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8");
行 100: context.Response.Write(JsonMapper.ToJson(hash));
行 101: context.Response.End();
行 102: }
行 103:
行 104: private void showError(string message)
行 105: {
行 106: Hashtable hash = new Hashtable();
行 107: hash["error"] = 1;
行 108: hash["message"] = message;
行 109: context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8");
行 110: context.Response.Write(JsonMapper.ToJson(hash));
行 111: context.Response.End();
行 112: }
行 113:
行 114: public bool IsReusable
行 115: {
行 116: get
行 117: {
行 118: return true;
行 119: }
行 120: }
行 121: }
行 122:
|