.Net Core Webapi 图片上传
public class ImgController : ControllerBase { private readonly IWebHostEnvironment_environment; public ImgController(IWebHostEnvironmentenvironment) { _environment = environment; } /// <summary> /// 上传图片 /// </summary> /// <param name="file"></param> /// <returns></returns> /// <exception cref="Exception"></exception> [HttpPost] public async Task<IActionResult> UploadFiles(IFormFile file) { if (file == null) return new OkObjectResult("请选择你要上传的图片!"); var images = new string[] { ".png", ".gif", ".jpg", ".bmp", ".jpeg" }; if (!images.Any(x => file.FileName.EndsWith(x))) return new OkObjectResult("上传图片格式有误!"); if (file.Length > 10 * 1024 * 1024) return new OkObjectResult("图片大小不可大于10MB!"); string fileExt = file.FileName.Substring(file.FileName.LastIndexOf('.')); //文件扩展名 string newFileName = Guid.NewGuid().ToString("N") + fileExt; var filePath = Path.Combine(_environment.WebRootPath+ "/imgs/" + newFileName) ; //判断当前文件夹(目录)是否存在 if (!Directory.Exists(filePath)) { using var stream = new FileStream(filePath, FileMode.Create); file.CopyTo(stream); stream.Flush(); return new OkObjectResult("上传成功!"); } return BadRequest("上传失败,服务器内部错误!"); }
}
[HttpPost] public async Task<string> TestUploadFile(IFormFile? formFile) { if (HttpContext.Request.Form.Files.Count <= 0) return "请选择上传文件"; var fileFloader = Path.Combine(_environment.WebRootPath, "test"); var fileName = Guid.NewGuid().ToString() + "_" + formFile.FileName; var filePath = Path.Combine(fileFloader, fileName); if (!Directory.Exists(fileFloader)) { Directory.CreateDirectory(fileFloader); } formFile.CopyTo(new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)); return "ok"; }
使用Md5上传
[HttpPost] public async Task<string> UploadFileAsync(IFormFile formFile) { try { if (formFile == null) return "请选择要上传的文件"; var md5 = GetFileHash(formFile.OpenReadStream()); var fileExtension = Path.GetExtension(formFile.FileName); var fileName = md5 + fileExtension; var path = Path.Combine(_webHostEnvironment.WebRootPath, "Images"); var filePath = Path.Combine(path, fileName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (System.IO.File.Exists(filePath)) { return "该文件已经上传过了"; } formFile.CopyTo(new FileStream(filePath, FileMode.CreateNew)); return "上传成功"; } catch (Exception e) { throw new Exception(e.Message); } } private static string GetFileHash(Stream fileStream) { using var md5 = MD5.Create(); byte[] hashBytes = md5.ComputeHash(fileStream); StringBuilder sb = new(); for (int i = 0; i < hashBytes.Length; i++) { sb.Append(hashBytes[i].ToString("X2")); } return sb.ToString(); }

浙公网安备 33010602011771号