using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.IO; namespace Ant.Service.Common { /// /// 文件上传 /// public class FileUpload { /// /// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"} /// /// 上下文 /// 文件路径 /// 返回文件的md5 /// 返回json状态信息 public static string FileUploadSingle(HttpContext context, string FilePath, out string outFileName) { string json = ""; //找到目标文件对象 HttpFileCollection hfc = context.Request.Files; HttpPostedFile hpf = hfc[0]; if (hpf.ContentLength > 0) { //根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费 //string FileName = CreateFileForFileNameByMd5(hpf.FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名 string FileName = hpf.FileName; string file = System.IO.Path.Combine(FilePath,FileName); if (!Directory.Exists(Path.GetDirectoryName(file))) { Directory.CreateDirectory(file); } hpf.SaveAs(file); json = "{status:\"success\",website:\"" + FileName + "\"}"; outFileName = FileName; } else { json = "{status:\"error\",website:\"error\"}"; outFileName = FilePath; } return json; } /// /// 单个文件上传(只获取第一个文件,返回的文件名是文件的md5值),返回为json数据格式,成功返回{status:"success",website:"a.jpg"},失败,返回{status:"error",website:"error"} /// /// 上下文 /// 文件路径 /// 返回文件的md5 /// 返回json状态信息 public static string FileUploadMulti(HttpContext context, string FilePath, out string[] outFileName) { string json = ""; //找到目标文件对象 HttpFileCollection hfc = context.Request.Files; outFileName = new string[hfc.Count]; for (int i = 0; i < hfc.Count; i++) { if (hfc[i].ContentLength > 0) { //根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费 string FileName = CreateFileForFileNameByMd5(hfc[i].FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名 string file = System.IO.Path.Combine(FilePath, FileName); if (!Directory.Exists(Path.GetDirectoryName(file))) { Directory.CreateDirectory(file); } hfc[i].SaveAs(file); outFileName[i] = FileName; } } //如果文件非空,就返回json数据 if (outFileName.Count() > 0) json = "{status:\"success\",website:\"" + string.Join(",", outFileName) + "\"}"; else json = "{status:\"error\",website:\"error\"}"; return json; } /// /// 根据文件的md5值当作文件的文件名( /// /// 文件名 /// 文件的md5值 public static string CreateFileForFileNameByMd5(string FileName) { return Common.MD5Provider.Hash(FileName+ DateTime.Now.ToString()) +Path.GetExtension(FileName); } /// /// 根据当前时间生成文件名 /// /// public static string CreateDateTimeForFileName(string FileName) { string datetime = DateTime.Now.ToString("yyyyMMddhhmmssffff"); string FilePath = datetime + Path.GetExtension(FileName); return FilePath; } #region Mvc用上传文件 public static void FileUploadSingle(HttpPostedFileBase file, string savePath, out string newName) { newName = string.Empty; if (file.ContentLength > 0) { //根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费 string FileName = CreateFileForFileNameByMd5(file.FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名 //string FileName = Common.Enums.ClsDic.DicPhone["安卓程序"]; string _newPath = System.IO.Path.Combine(savePath, FileName); if (!Directory.Exists(Path.GetDirectoryName(_newPath))) { Directory.CreateDirectory(_newPath); } file.SaveAs(_newPath); newName = FileName; } else { newName = savePath; } } public static void FileUploadSingle(HttpPostedFileBase file, string savePath, out string newName,int type) { newName = string.Empty; if (file.ContentLength > 0) { //根据文件的md5的hash值做文件名,防止文件的重复和图片的浪费 //string FileName = CreateFileForFileNameByMd5(file.FileName); //CreateDateTimeForFileName(hpf.FileName);//自动生成文件名 string FileName =""; if(type==1) FileName = Common.Enums.ClsDic.DicPhone["安卓程序"]; else FileName = Common.Enums.ClsDic.DicPhone["苹果程序"]; string _newPath = System.IO.Path.Combine(savePath, FileName); if (!Directory.Exists(Path.GetDirectoryName(_newPath))) { Directory.CreateDirectory(_newPath); } file.SaveAs(_newPath); newName = FileName; } else { newName = savePath; } } #endregion } }