1

在我的 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 });
    }
4

0 回答 0