2017-03-05 76 views
0

我上傳圖像到服務器,它被正確保存在IIS網站文件夾中。問題是從控制器返回時,即使我在文件夾中看到的圖像已被替換,它仍然顯示前一圖像而不是新圖像。我想這可能是因爲緩存,並試圖:上傳的圖像未加載

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

是的,你是正確的,上傳的圖片仍然在你的瀏覽器緩存。你的解決方案之一是實現版本控制,或者在我的部分,文件名的GUID編號系統,以確保瀏覽器將獲得最新的文件。

這是一個例子:

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

在隱藏文件的代碼,你可以這樣做:

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

雖然你添加一個noCache屬性,還是瀏覽器將獲得較舊的文件,並且可能會更新30分鐘或更長時間,所以您確實需要使用不同的文件名以確保您加載了全新的圖像。