namespace MiaoYu.Core.Files; public class FileManager : IFileManager, ITransientDependency { //private readonly AppConfiguration appConfiguration; private readonly IWebHostEnvironment webHostEnvironment; private FileManagerContext fileManagerContext; public FileManager(IWebHostEnvironment webHostEnvironment) { this.webHostEnvironment = webHostEnvironment; Init(); } private void Init() { //fileManagerContext = new FileManagerContext(); //fileManagerContext.MaxFileSizeLimit = appConfiguration.Configs.FileManager.GetMaxFileSizeLimit(); //fileManagerContext.FileExtensions = appConfiguration.Configs.FileManager.AllowExtensions.Split("|").Select(s => s.ToLower()).ToList(); //fileManagerContext.ServerUrl = appConfiguration.Configs.FileManager.ServerUrl; //fileManagerContext.FileDir = GetFilePath(appConfiguration.Configs.FileManager.DirectoryUrl); } /// /// 获取配置的文件路径 /// /// /// private string GetFilePath(string dir) { if (!dir.StartsWith("/") && !dir.StartsWith("\\")) { dir = "/" + dir; } if (!dir.EndsWith("/") && !dir.EndsWith("\\")) { dir = dir + "/"; } return webHostEnvironment.WebRootPath + dir; } /// /// 设置追加目录 /// /// /// public FileManager AddSaveFolder(string dir) { if (dir.StartsWith("/") || dir.StartsWith("\\")) { dir = dir.Substring(1, dir.Length - 1); } if (!dir.EndsWith("/") && !dir.EndsWith("\\")) { dir += "/"; } fileManagerContext.FileDir += dir; fileManagerContext.ServerUrl += dir; if (!Directory.Exists(fileManagerContext.FileDir)) { Directory.CreateDirectory(fileManagerContext.FileDir); } return this; } /// /// 设置上传最大长度 /// /// /// public FileManager AddMaxLength(long maxLength) { fileManagerContext.MaxFileSizeLimit = maxLength; return this; } /// /// 设置上传最大长度 /// /// /// public FileManager AddMaxLength(string maxLength) { fileManagerContext.MaxFileSizeLimit = maxLength.ToStorageByteLength(); return this; } /// /// 允许所有文件格式 /// /// public FileManager AllowAnyFileExtensions() { fileManagerContext.IsAllowAnyFile = true; return this; } /// /// 追加允许文件格式 /// /// /// public FileManager AddFileExtensions(params string[] fileExtensions) { foreach (var fileExtension in fileExtensions) { if (!fileManagerContext.FileExtensions.Contains(fileExtension.ToLower())) { fileManagerContext.FileExtensions.Add(fileExtension.ToLower()); } } return this; } /// /// 重置文件格式 /// /// public FileManager ResetFileExtensions() { fileManagerContext.FileExtensions.Clear(); return this; } /// /// 构建FileManagerContext /// /// public FileManagerContext BuildFileManagerContext() { return fileManagerContext; } }