第二次保存HttpPostedFileBase时出现MVC4异常

时间:2013-03-27 10:51:51

标签: image exception asp.net-mvc-4 upload httppostedfilebase

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

0 个答案:

没有答案