在我的ASP.NET MVC4项目中,我需要一种方法来上传保存到服务器上的文件夹的图片。我想出了下面的控制器代码:它基本上有效,但只是第一次!再次调用此方法时(使用相同的TeacherId设置新图像),我得到一个System.IO.IOException(HResult -2147024864),它告诉我该文件正由另一个进程使用。我怎样才能避免锁定?为什么它实际上首先起作用?我整理了所有图像和流,但它接缝我不知何故丢失了一些重要的东西。谢谢你的帮助!
[HttpPost]
public ActionResult Upload(HttpPostedFileBase pic, int TeacherId)
{
if (pic.ContentLength > 0) {
var fileName = "Teacher" + TeacherId.ToString() + "tmp.jpg";
var path = Path.Combine(Server.MapPath("~/TempImages"), fileName);
Image i = Image.FromStream(pic.InputStream, true, true);
if (i.Size.Width > 700 || i.Height > 700)
{
Image resizedImage;
resizedImage = ResizeImage(i, new Size { Width = 700, Height = 700 }, true);
i.Dispose();
resizedImage.Save(path,ImageFormat.Jpeg);
resizedImage.Dispose();
}
else
{
i.Dispose();
}
pic.InputStream.Close();
pic.InputStream.Dispose();
TempData["TeacherId"] = TeacherId.ToString();
return RedirectToAction("EditImage", new { TeacherId = TeacherId });
}
return RedirectToAction("UploadImage", new { TeacherId = TeacherId });
}