上载的图像未加载

时间:2017-03-05 04:36:17

标签: c# .net asp.net-mvc

我将图像上传到服务器,它会正确保存在IIS网站文件夹中。问题是当从Controller返回时它仍然显示前一个图像而不是新图像,即使我在文件夹中看到的图像已被替换。我认为这可能是因为缓存并试图:

namespace Web.Controllers
{
    [Authorize]
    [System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
    public class EditProfileController : Controller
    ...
}

照片上传的工作原理如下:

  [HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult UploadImage(MyModel profile)
  {
     // check if image exists, delete it and save new one
     ...
     RedirectToAction("EditView")
  }

  public ActionResult EditView()
  {
     ViewBag.Image  = getProfileImage();

     return View(myModel);
  }

1 个答案:

答案 0 :(得分:1)

是的,您是正确的,上传的图片仍然在您的浏览器中缓存。你的解决方案之一是实现版本控制,或者在我的部分,GUID编号系统的文件名,以确保浏览器将获得最新的文件。

这是一个例子:

<img alt="Image" src="@href("~/Uploads/" + strImageFileName + Version )"

在您的代码隐藏文件中,您可以执行以下操作:

var strImageFileName= string.Format(@"{0}.txt", Guid.NewGuid());

虽然您添加了NoCache属性,但浏览器仍会获取旧文件,并且可能会更新30分钟或更长时间,因此您确实需要使用不同的文件名来确保加载新图像。