写了一个.net core上传的公用类调用
using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LiveFactory.Core { public enum FileType { /// <summary> ///图片 /// </summary> image = 1, /// <summary> /// 视频 /// </summary> video = 2 } public class FileInfoReulst { public FileInfoReulst() { } public FileInfoReulst(string meg) { this.Success = false; this.Message = meg; } /// <summary> /// 是否成功 /// </summary> public bool Success { get; set; } = true; /// <summary> /// 文件类型异常消息 /// </summary> public string Message { get; set; } /// <summary> /// 保存的文件名 /// </summary> public string FileName { get; set; } /// <summary> /// 1=image,2=video /// </summary> public FileType FileType { get; set; } } public class SaveFileReulst { public string SaveDriveFileName { get; set; } public string SaveFileName { get; set; } public string SaveDirectory { get; set; } } public static class FilesBaseHelper { /// <summary> /// 保存的盘符根目录 /// </summary> public readonly static string DriveFolder = "D:\\Uploads\\"; /// <summary> /// 文件根目录名称 /// </summary> public readonly static string BasePath = "/Uploads/"; public readonly static string ImgFileLength ="5120"; public readonly static string ImgExts = ".jpg.jpeg.png.gif"; public readonly static string VideoFileLength = "1048576"; public readonly static string VideoExts = ".mp4.avi.rmvb.mkv.flv"; const string ImageFileName = "images/"; const string VideoFileName = "video/"; static string GetFileTypeFolder(FileType filetype, bool IsBase = false) { string _path = IsBase ? BasePath : DriveFolder; switch (filetype) { case FileType.image: _path += ImageFileName; break; case FileType.video: _path += VideoFileName; break; } return _path; } public static SaveFileReulst GetSaveFilePath(FileType fileType, string fileName) { string _folder = DateTime.Now.ToString("yyyy-MM") + "/"; string driveFolder = GetFileTypeFolder(fileType) + _folder; string baseFolder = GetFileTypeFolder(fileType, true) + _folder; string bas = Directory.GetCurrentDirectory() + "/wwwroot";//获取服务器目录 if (!Directory.Exists(bas + baseFolder)) { Directory.CreateDirectory(bas + baseFolder); } //Abp.IO.DirectoryHelper.CreateIfNotExists(driveFolder); string savefilename = Guid.NewGuid() + GetExtensionName(fileName); SaveFileReulst result = new SaveFileReulst() { SaveDriveFileName = driveFolder + savefilename, SaveFileName = baseFolder + savefilename, SaveDirectory= bas + baseFolder + savefilename }; return result; } public static string GetExtensionName(string fileName) { return Path.GetExtension(fileName); } public static bool Validate(string fileName, long fileSize, FileType filetype, out string Error) { Error = ""; string extensValue = ""; long size = 0; switch (filetype) { case FileType.image: extensValue = ImgExts; size = Convert.ToInt32(ImgFileLength) * 1024; break; case FileType.video: extensValue = VideoExts; size = Convert.ToInt32(VideoFileLength) * 1024; break; } if (!ValidateeExtension(extensValue, fileName)) { Error = "文件类型错误"; return false; } if (!ValidateeSize(size, fileSize)) { Error = "文件大小不可超过" + size / 1024 + "KB"; return false; } return true; } static bool ValidateeExtension(string ExtensionValue, string fileName) { string ext = GetExtensionName(fileName).ToLower(); return ExtensionValue.ToLower().Contains(ext); } static bool ValidateeSize(long Size, long fileSize) { return fileSize <= Size; } } }