[英]System.ArgumentException: "Parameter is not Valid" Memorystream to Image
[英]ArgumentException: Parameter is not valid while copying from FileStream to MemoryStream
我正在嘗試使用來自 Memorystream 的 bitmap 調整圖像大小並保存到目錄。 它在第一次運行時有效,但如果我第二次嘗試更新圖像,我會收到 ArgumentException。
public IActionResult UpdatePhoto(int id, IFormFile file)
{
var company = _context.Companies.FirstOrDefault(x => x.Id == id);
var image = company.Logo;
var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/companies", image);
if (System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
ResizeImage(file, file.FileName);
company.Logo = file.FileName;
_context.Companies.Update(company);
_context.SaveChanges();
return RedirectToAction(nameof(Index));
}
我在調整大小方法中遇到錯誤
public void ResizeImage(IFormFile file, string FileName)
{
using (var memoryStream = new MemoryStream())
{
file.CopyToAsync(memoryStream);
Bitmap original = (Bitmap)Image.FromStream(memoryStream);
Bitmap processed = new Bitmap(original,new Size(300,300));
var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/companies", FileName );
processed.Save(path);
}
您不應該在不可awaitable
的方法中使用任何async
方法。 將您的代碼更新為以下應該可以解決問題。
public void ResizeImage(IFormFile file, string FileName)
{
using (var memoryStream = new MemoryStream())
{
file.CopyTo(memoryStream);
Bitmap original = (Bitmap)Image.FromStream(memoryStream);
Bitmap processed = new Bitmap(original,new Size(300,300));
var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/companies", FileName );
processed.Save(path);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.