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);
 | 
						|
            //}
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |