我将图像上传到服务器,它会正确保存在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);
}
答案 0 :(得分:1)
是的,您是正确的,上传的图片仍然在您的浏览器中缓存。你的解决方案之一是实现版本控制,或者在我的部分,GUID编号系统的文件名,以确保浏览器将获得最新的文件。
这是一个例子:
<img alt="Image" src="@href("~/Uploads/" + strImageFileName + Version )"
在您的代码隐藏文件中,您可以执行以下操作:
var strImageFileName= string.Format(@"{0}.txt", Guid.NewGuid());
虽然您添加了NoCache属性,但浏览器仍会获取旧文件,并且可能会更新30分钟或更长时间,因此您确实需要使用不同的文件名来确保加载新图像。