using System; using System.Collections; using System.Globalization; using System.IO; using System.Web; namespace CommonTool { public class UploadFileHelper { public static UploadFileHelper Instance { get; } = new UploadFileHelper(); public UploadResult UploadFiles(string filePath, string fileType, HttpRequestBase request,HttpServerUtilityBase server) { UploadResult result = new UploadResult { FileUrls = new ArrayList(), Success = false, Msg = "Failure!", VirtualPathUrls = new ArrayList(), }; //遍历所有文件域 foreach (string fieldName in request.Files.AllKeys) { HttpPostedFileBase file = request.Files.Get(fieldName); string ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo); filePath += ymd + "/"; string fileName = DateTime.Now.ToString("yyyyMMddhhmmss_ffff"); string urlPath = $"{filePath}{fileName}.{fileType}"; string virtualPath= server.MapPath(urlPath); try { if (!Directory.Exists(server.MapPath(filePath))) Directory.CreateDirectory(server.MapPath(filePath)); file?.SaveAs(virtualPath); result.FileUrls.Add(urlPath); result.VirtualPathUrls.Add(virtualPath); result.Success = true; result.Msg = "Success!"; } catch (Exception e) { result.Msg = e.Message; return result; } } return result; } public UploadResult UploadFiles2(string filePath, HttpPostedFileBase requestFile, HttpServerUtilityBase server) { UploadResult result = new UploadResult { FileUrls = new ArrayList(), Success = false, Msg = "Failure!" }; //遍历所有文件域 string urlPath = $"{filePath}"; string virtualPath = server.MapPath(urlPath); try { if (File.Exists(virtualPath)) File.Delete(virtualPath); requestFile?.SaveAs(virtualPath); result.FileUrls.Add(urlPath); result.VirtualPathUrls.Add(virtualPath); result.Success = true; result.Msg = "Success!"; } catch (Exception e) { result.Msg = e.Message; return result; } return result; } } public class UploadResult { /// /// 表示文件是否已上传成功。 /// // ReSharper disable once InconsistentNaming public bool Success; /// /// 自定义的附加消息。 /// // ReSharper disable once InconsistentNaming public string Msg; /// /// 表示所有文件的保存地址,该变量为一个数组。 /// // ReSharper disable once InconsistentNaming public ArrayList FileUrls; public ArrayList VirtualPathUrls; } public class UploadKindEditor { public static UploadKindEditor Instance { get; } = new UploadKindEditor(); public HttpContextBase Context { get; set; } public string KindEditorUpload(string filePath, HttpContextBase context) { Context = context; string dirPath = filePath;//文件保存目录路径 int maxSize = 10*1024*1024;//最大文件大小 string dirName = context.Request.QueryString["dir"]; string fileUrl; //定义允许上传的文件扩展名 Hashtable extTable = new Hashtable { {"image", "gif,jpg,jpeg,png,bmp"}, {"flash", "swf,flv"}, {"media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"}, {"file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"} }; HttpPostedFileBase imgFile = context.Request.Files["imgFile"]; //if (!Directory.Exists(dirPath)) //{ // showError("上传目录不存在。"); //} if (string.IsNullOrEmpty(dirName)) { dirName = "image"; } if (!extTable.ContainsKey(dirName)) { return showError("目录名不正确。"); } if (imgFile == null) { return showError("请选择文件。"); } string fileName = imgFile.FileName; string fileExt = Path.GetExtension(fileName)?.ToLower(); if (imgFile.InputStream.Length > maxSize) { return showError("上传文件大小超过限制。"); } if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(((string)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1) { return showError("上传文件扩展名是不允许的扩展名。\n只允许" + ((string)extTable[dirName]) + "格式。"); } //创建文件夹 dirPath += dirName + "/"; var savePath = context.Server.MapPath(dirPath); if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } string ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo); dirPath += ymd + "/"; savePath = context.Server.MapPath(dirPath); if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; filePath = savePath + newFileName; imgFile.SaveAs(filePath); fileUrl = dirPath + newFileName; Hashtable hash = new Hashtable { ["error"] = 0, ["url"] = fileUrl }; return hash.ToJson(); } private string showError(string message) { Hashtable hash = new Hashtable { ["error"] = 1, ["message"] = message }; return hash.ToJson(); } } }