204 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			204 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Web;
 | |
| using System.IO;
 | |
| using System.Collections;
 | |
| 
 | |
| namespace FineUIPro.Examples.res.umeditor.net
 | |
| {
 | |
|     /// <summary>
 | |
|     /// UEditor编辑器通用上传类
 | |
|     /// </summary>
 | |
|     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") + "/";
 | |
|             uploadpath = cxt.Server.MapPath(pathbase);//获取文件上传路径
 | |
|             
 | |
|             try
 | |
|             {
 | |
|                 uploadFile = cxt.Request.Files[0];
 | |
|                 originalName = uploadFile.FileName;
 | |
| 
 | |
|                 //目录创建
 | |
|                 createFolder();
 | |
| 
 | |
|                 //格式验证
 | |
|                 if (checkType(filetype))
 | |
|                 {
 | |
|                     state = "不允许的文件类型";
 | |
|                 }
 | |
|                 //大小验证
 | |
|                 if (checkSize(size))
 | |
|                 {
 | |
|                     state = "文件大小超出网站限制";
 | |
|                 }
 | |
|                 //保存图片
 | |
|                 if (state == "SUCCESS")
 | |
|                 {
 | |
|                     filename = reName();
 | |
|                     uploadFile.SaveAs(uploadpath + filename);
 | |
|                     URL =  pathbase + filename;
 | |
|                 }
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|                 state = "未知错误";
 | |
|                 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)
 | |
|             {
 | |
|                 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);
 | |
|             infoList.Add("originalName", originalName);
 | |
|             infoList.Add("name", Path.GetFileName(URL));
 | |
|             infoList.Add("size", uploadFile.ContentLength);
 | |
|             infoList.Add("type", Path.GetExtension(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);
 | |
|             //}
 | |
|         }
 | |
|     }
 | |
| } |