public IActionResult UploadFiles([FromQuery] UpLoadAction action, string specilName = null) { //string action = Request.Query["action"]; //EnumCommon.GetEnum<UpLoadAction>(action) var result = InvokeUploadFiles(action, specilName); string data = null; if (result.Data != null && result.Data.Any()) { data = string.Join(",", result.Data.Select(u => u.FileName)); } return(JsonResult(new InvokeResult <string> { Success = result.Success, Message = result.Message, Data = data })); }
/// <summary> /// 文件上传方法 /// </summary> /// <param name="specilName">指定文件名</param> /// <returns></returns> public InvokeResult <List <UploadedFileModel> > InvokeUploadFiles(UpLoadAction action, string specilName = null) { var uploadedFiles = new List <UploadedFileModel>(); var files = Request.Form.Files; var uploadFolder = ConfigManager.UploadFolder; if (!FileHelper.IsExistMapFolder(uploadFolder)) { FileHelper.CreateDir(uploadFolder); } var dateFolder = DateTime.Now.ToString("yyyyMMdd"); if (!FileHelper.IsExistMapFolder(uploadFolder + "\\" + dateFolder)) { FileHelper.CreateDir(uploadFolder + "\\" + dateFolder); } var uploadAllowExtension = new string[] { }; switch (action) { case UpLoadAction.cover: uploadAllowExtension = ConfigManager.UploadAllowImgExtension; break; case UpLoadAction.package: uploadAllowExtension = ConfigManager.UploadAllowPackExtension; break; case UpLoadAction.attichfile: var extenList = ConfigManager.UploadAllowPackExtension.ToList(); extenList.AddRange(ConfigManager.UploadAllowOfficeExtension); extenList.AddRange(ConfigManager.UploadAllowImgExtension); extenList.AddRange(ConfigManager.UploadAllowVideoExtension); extenList.AddRange(ConfigManager.UploadAllowVoiceExtension); uploadAllowExtension = extenList.ToArray(); break; } if (!uploadAllowExtension.Any()) { if (UpLoadAction.attichfile == action) { return(RequestResult.Failed <List <UploadedFileModel> >("只能上传文档、图片、视/音频类格式文件")); } return(RequestResult.Failed <List <UploadedFileModel> >("只能上传文件格式:" + string.Join(",", uploadAllowExtension))); } var allowExten = files.Select(u => FileHelper.GetExtension(u.FileName).Replace(".", "")); var leaveExten = allowExten.Where(w => !uploadAllowExtension.Contains(w)); if (leaveExten.Any()) { return(RequestResult.Failed <List <UploadedFileModel> >("不支持的文件格式:" + string.Join(',', leaveExten))); } if (files.Any(w => w.Length > ConfigManager.MaxFileLength)) { return(RequestResult.Failed <List <UploadedFileModel> >("文件最大不能超过200M,请重新选择文件")); } try { int i = 0; foreach (var formFile in files) { if (formFile.Length > 0) { var extension = FileHelper.GetExtension(formFile.FileName); if (string.IsNullOrWhiteSpace(specilName)) { specilName = Guid.NewGuid().ToString().Replace("-", ""); } else { if (specilName == "headicon") { dateFolder = "headicon"; specilName = (CoreContextProvider.CurrentMember?.Account) ?? Request.Form["ownid"]; if (specilName.IsEmpty()) { return(RequestResult.Failed <List <UploadedFileModel> >("上传参数有误!")); } extension = ".jpg"; if (!Directory.Exists(FileHelper.MapFilePath($"/{uploadFolder}/{dateFolder}"))) { Directory.CreateDirectory(FileHelper.MapFilePath($"/{uploadFolder}/{dateFolder}")); } } else { specilName = specilName + i; } } var fileName = $"/{uploadFolder}/{dateFolder}/{specilName}" + extension; var filePath = FileHelper.MapFilePath(fileName); using (var stream = new FileStream(filePath, FileMode.Create)) { formFile.CopyTo(stream); uploadedFiles.Add(new UploadedFileModel { FileName = fileName, Name = formFile.FileName, FileType = extension.Trim('.'), FileSize = stream.Length }); } i++; } } } catch (Exception ex) { _Logger.LogError(ex, "文件上传失败!"); return(RequestResult.Failed <List <UploadedFileModel> >("文件上传失败!")); } return(RequestResult.Success(uploadedFiles)); }