ArgumentException:从 FileStream 复制到 MemoryStream 时参数无效



我正在尝试使用内存流中的位图调整图像大小并保存到目录。它在第一次运行时有效,但是如果我尝试第二次更新图像,我会得到 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);
}
}

相关内容

  • 没有找到相关文章

最新更新