Пример #1
0
        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
            }));
        }
Пример #2
0
        /// <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));
        }