using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; namespace WebForm.Controls.UploadFiles { /// /// Upload 的摘要说明 /// public class Upload : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string str1 = context.Request.Form["str1"]; string str2 = context.Request.Form["str2"]; string filetype = context.Request.Form["filetype"]; var obj = RoadFlow.Cache.IO.Opation.Get(str1 ?? ""); if (str1.IsNullOrEmpty() || str2.IsNullOrEmpty() || obj == null || obj.ToString() != str2) { context.Response.Write("您不能上传文件"); return; } //接收上传后的文件 HttpPostedFile file = context.Request.Files["Filedata"]; if (filetype.IsNullOrEmpty()) { if (!RoadFlow.Utility.Config.UploadFileType.Contains(Path.GetExtension(file.FileName).TrimStart('.'), StringComparison.CurrentCultureIgnoreCase)) { context.Response.Write("您上传的文件类型不被允许"); return; } } else { if (!filetype.Contains(Path.GetExtension(file.FileName).TrimStart('.'), StringComparison.CurrentCultureIgnoreCase)) { context.Response.Write("您上传的文件类型不被允许"); return; } } //获取文件的保存路径 string uploadPath; string uploadFullPath = context.Server.MapPath(getFilePath(out uploadPath)); //判断上传的文件是否为空 if (file != null) { if (!Directory.Exists(uploadFullPath)) { Directory.CreateDirectory(uploadFullPath); } //保存文件 string newFileName = getFileName(uploadFullPath, file.FileName); string newFileFullPath = uploadFullPath + newFileName; try { int fileLength = file.ContentLength; file.SaveAs(newFileFullPath); context.Response.Write("1|" + (uploadPath + newFileName) + "|" + (fileLength / 1000).ToString("###,###") + "|" + newFileName); return; } catch { context.Response.Write("上传文件发生了错误"); return; } } else { context.Response.Write("上传文件为空"); return; } } /// /// 得到上传文件名 /// /// /// private string getFileName(string filePath, string fileName) { while (System.IO.File.Exists(filePath + fileName)) { fileName = Path.GetFileNameWithoutExtension(fileName) + "_" + RoadFlow.Utility.Tools.GetRandomString() + Path.GetExtension(fileName); } return fileName; } /// /// 得到文件保存路径 /// /// private string getFilePath(out string path1) { DateTime date = RoadFlow.Utility.DateTimeNew.Now; path1 = WebForm.Common.Tools.BaseUrl + "/Files/UploadFiles/" + date.ToString("yyyyMM") + "/" + date.ToString("dd") + "/"; return path1; } public bool IsReusable { get { return false; } } } }