using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Collections; /// /// UEditor编辑器通用上传类 /// public class Uploader { string state = "SUCCESS"; string URL = null; string currentType = null; string uploadpath = null; string filename = null; string originalName = null; HttpPostedFile uploadFile = null; /** * 上传文件的主处理方法 * @param HttpContext * @param string * @param string[] *@param int * @return Hashtable */ public Hashtable upFile(HttpContext cxt, string pathbase, string[] filetype, int size) { //pathbase = pathbase + DateTime.Now.ToString("yyyy-MM-dd") + "/"; pathbase = pathbase + "/"; uploadpath = cxt.Server.MapPath(pathbase);//获取文件上传路径 try { uploadFile = cxt.Request.Files[0]; originalName = uploadFile.FileName; //目录创建 createFolder(); //格式验证 if (checkType(filetype)) { //不允许的文件类型 state = "\u4e0d\u5141\u8bb8\u7684\u6587\u4ef6\u7c7b\u578b"; } //大小验证 if (checkSize(size)) { //文件大小超出网站限制 state = "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u7f51\u7ad9\u9650\u5236"; } //保存图片 if (state == "SUCCESS") { filename = reName(); uploadFile.SaveAs(uploadpath + filename); URL = pathbase + filename; } } catch (Exception e) { // 未知错误 state = "\u672a\u77e5\u9519\u8bef"; URL = ""; } return getUploadInfo(); } /** * 上传涂鸦的主处理方法 * @param HttpContext * @param string * @param string[] *@param string * @return Hashtable */ public Hashtable upScrawl(HttpContext cxt, string pathbase, string tmppath, string base64Data) { pathbase = pathbase + DateTime.Now.ToString("yyyy-MM-dd") + "/"; uploadpath = cxt.Server.MapPath(pathbase);//获取文件上传路径 FileStream fs = null; try { //创建目录 createFolder(); //生成图片 filename = System.Guid.NewGuid() + ".png"; fs = File.Create(uploadpath + filename); byte[] bytes = Convert.FromBase64String(base64Data); fs.Write(bytes, 0, bytes.Length); URL = pathbase + filename; } catch (Exception e) { state = "未知错误"; URL = ""; } finally { fs.Close(); deleteFolder(cxt.Server.MapPath(tmppath)); } return getUploadInfo(); } /** * 获取文件信息 * @param context * @param string * @return string */ public string getOtherInfo(HttpContext cxt, string field) { string info = null; if (cxt.Request.Form[field] != null && !String.IsNullOrEmpty(cxt.Request.Form[field])) { info = field == "fileName" ? cxt.Request.Form[field].Split(',')[1] : cxt.Request.Form[field]; } return info; } /** * 获取上传信息 * @return Hashtable */ private Hashtable getUploadInfo() { Hashtable infoList = new Hashtable(); infoList.Add("state", state); infoList.Add("url", URL); if (currentType != null) infoList.Add("currentType", currentType); if (originalName != null) infoList.Add("originalName", originalName); return infoList; } /** * 重命名文件 * @return string */ private string reName() { return System.Guid.NewGuid() + getFileExt(); } /** * 文件类型检测 * @return bool */ private bool checkType(string[] filetype) { currentType = getFileExt(); return Array.IndexOf(filetype, currentType) == -1; } /** * 文件大小检测 * @param int * @return bool */ private bool checkSize(int size) { return uploadFile.ContentLength >= (size * 1024*1024); } /** * 获取文件扩展名 * @return string */ private string getFileExt() { string[] temp = uploadFile.FileName.Split('.'); return "." + temp[temp.Length - 1].ToLower(); } /** * 按照日期自动创建存储文件夹 */ private void createFolder() { if (!Directory.Exists(uploadpath)) { Directory.CreateDirectory(uploadpath); } } /** * 删除存储文件夹 * @param string */ public void deleteFolder(string path) { //if (Directory.Exists(path)) //{ // Directory.Delete(path, true); //} } }