/// <summary> /// 上传单个文件 /// </summary> /// <param name="iFileModule"></param> /// <param name="fileCollection"></param> /// <returns></returns> public async static Task <TData <string> > UploadFile(int iFileModule, IFormFileCollection files) { string dirModule = string.Empty; TData <string> obj = new TData <string>(); if (files == null || files.Count == 0) { obj.Message = "请先选择文件!"; return(obj); } if (files.Count > 1) { obj.Message = "一次只能上传一个文件!"; return(obj); } var file = files[0]; switch (iFileModule) { case (int)UploadFileType.Portrait: dirModule = UploadFileType.Portrait.ToString(); break; case (int)UploadFileType.News: dirModule = UploadFileType.News.ToString(); break; case (int)UploadFileType.Cert: if (file.Length > 5 * 1024 * 1024) // 5MB { obj.Message = "文件最大限制为 5MB"; return(obj); } dirModule = UploadFileType.Cert.ToString(); break; case (int)UploadFileType.Paper: dirModule = UploadFileType.Paper.ToString(); break; default: obj.Message = "请指定上传到的模块"; return(obj); } string fileExtension = CommonHelper.GetCustomValueWhenEmpty(Path.GetExtension(file.FileName), ".png"); string newFileName = SecurityHelper.GetGuid() + fileExtension; string dir = "Resource" + Path.DirectorySeparatorChar + dirModule + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd").Replace('-', Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar; string absoluteDir = Path.Combine(GlobalContext.HostingEnvironment.ContentRootPath, dir); string absoluteFileName = string.Empty; if (!Directory.Exists(absoluteDir)) { Directory.CreateDirectory(absoluteDir); } absoluteFileName = absoluteDir + newFileName; try { using (FileStream fs = File.Create(absoluteFileName)) { await file.CopyToAsync(fs); fs.Flush(); } obj.Result = Path.AltDirectorySeparatorChar + ConvertDirectoryToHttp(dir) + newFileName; obj.Message = Path.GetFileNameWithoutExtension(CommonHelper.GetCustomValueWhenEmpty(file.FileName, newFileName)); obj.Description = (file.Length / 1024).ToString(); // KB obj.Tag = 1; } catch (Exception ex) { obj.Message = ex.Message; } return(obj); }