.net6,.net core 文件上传封装。枚举使用。封装通用的文件上传 电脑版发表于:2023/2/24 21:59 ### 封装的代码如下 ``` using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace WY.JBLand.API.Tools { public enum UpLoadFileState { Sucess, TypeNoSupport, NoFile }; public class UpLoadFileResult { public string FilePath { get; set; } public UpLoadFileState UpLoadFileState { get; set; } } /// <summary> /// 文件上传工具类封装 /// </summary> public class UpLoadFileTools { public UpLoadFileResult FileUpLoad(IFormFileCollection files, string[] limitTypes, string savePath) { UpLoadFileResult upLoadFileResult = new UpLoadFileResult(); if (files == null || files.Count == 0) { upLoadFileResult.UpLoadFileState = UpLoadFileState.NoFile; return upLoadFileResult; } foreach (IFormFile file in files) { //定义图片数组后缀格式 //string[] LimitPictureType = { ".XLS" }; //获取图片后缀是否存在数组中 string currentPictureExtension = Path.GetExtension(file.FileName).ToUpper(); if (!limitTypes.Contains(currentPictureExtension)) { upLoadFileResult.UpLoadFileState = UpLoadFileState.TypeNoSupport; return upLoadFileResult; } //文件重命名防止重复 var newName = Guid.NewGuid().ToString("N") + currentPictureExtension.ToLower(); var new_path = Path.Combine("uploads/files/", newName); //判断一下存储路径是否存在,不存在就创建 //var savaDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads/files"); var savaDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", savePath); if (!Directory.Exists(savaDir)) Directory.CreateDirectory(savaDir); string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", new_path); using (var stream = new FileStream(path, FileMode.Create)) { file.CopyTo(stream); stream.Flush(); upLoadFileResult.FilePath = path; } } upLoadFileResult.UpLoadFileState = UpLoadFileState.Sucess; return upLoadFileResult; } } } ``` ### 调用 ``` ReturnModel<int> returnModel = new ReturnModel<int>(); UpLoadFileTools upLoadFileTools = new UpLoadFileTools(); IFormFileCollection files = Request.Form.Files; //定义图片数组后缀格式 string[] LimitTypes = { ".XLS" }; string savePath = "uploads/files"; UpLoadFileResult upLoadFileResult = upLoadFileTools.FileUpLoad(files, LimitTypes, savePath); if (upLoadFileResult.UpLoadFileState == UpLoadFileState.NoFile) { returnModel.Code = Enum.ResultCode.MESSAGE_ERROR; returnModel.Msg = "没有上传文件,无法导入,请检查"; return returnModel; } if (upLoadFileResult.UpLoadFileState == UpLoadFileState.TypeNoSupport) { returnModel.Code = Enum.ResultCode.MESSAGE_ERROR; returnModel.Msg = "暂时只支持excel导入,请检查"; return returnModel; } ```