using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.IO; using System.Collections; using System.Web.Script.Serialization; using System.Globalization; namespace NetWorkHardNew.GlobalAshx { /// /// $codebehindclassname$ 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class KindeditorUpload : IHttpHandler { //文件保存目录路径 private String savePath = "attached"; //定义允许上传的文件扩展名 private String fileTypes = "gif,jpg,jpeg,png,bmp,swf"; //最大文件大小 private int maxSize = 100000000; public void ProcessRequest(HttpContext context) { HttpPostedFile imgFile = context.Request.Files["imgFile"]; if (imgFile == null) { showError(context, "请选择文件。"); } string DirectoryName = context.Request.QueryString["DirectoryName"]; if (string.IsNullOrEmpty(DirectoryName) == true) DirectoryName = "attached"; savePath = System.AppDomain.CurrentDomain.BaseDirectory + DirectoryName; if (Directory.Exists(savePath) == false) Directory.CreateDirectory(savePath); String fileName = imgFile.FileName; String fileExt = Path.GetExtension(fileName).ToLower(); ArrayList fileTypeList = ArrayList.Adapter(fileTypes.Split(',')); if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize) { showError(context, "大小超过限制。"); } if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1) { showError(context, "上传文件扩展名是不允许的扩展名。"); } String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; String filePath = savePath + "/" + newFileName; imgFile.SaveAs(filePath); String fileUrl = "../" + DirectoryName + "/" + newFileName; Hashtable hash = new Hashtable(); hash["error"] = 0; hash["url"] = fileUrl; context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8"); string jsonString = new JavaScriptSerializer().Serialize(hash); context.Response.Write(jsonString); context.Response.End(); } private void showError(HttpContext context, string message) { Hashtable hash = new Hashtable(); hash["error"] = 1; hash["message"] = message; context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8"); string jsonString = new JavaScriptSerializer().Serialize(hash); context.Response.Write(jsonString); context.Response.End(); } public bool IsReusable { get { return false; } } } }