如何避免从缓存中加载图像

时间:2013-11-09 09:21:04

标签: c# asp.net file-upload

我正在使用asp.net文件上传控件

我将图像上传到服务器UserID+"ProfilePic"。 上传后我通过

后面的代码将图像src设置为此
string FolderPath = System.Configuration.ConfigurationManager.AppSettings["PATH"].ToString();
string assoid = HttpContext.Current.Session["strAssociateId"].ToString()+"ProfilePic.jpg";
if (FileUpload1.HasFile)
{
    try
    {
        string fileName = FileUpload1.FileName;
        FileUpload1.PostedFile.SaveAs(FolderPath +assoid);
        string imagePath = "serverpath" +assoid;
        face_crop_original.Src = imagePath;  //Problem is here
    }
}

所以这里发生的是图像上传,但是当我设置image.Src=xxxx时,它会从缓存中获取旧图像!请帮忙。

2 个答案:

答案 0 :(得分:1)

public static string VersionCssUrl(string url)
    {
        // Get physical path.
        try
        {
            var path = HttpContext.Current.Server.MapPath(url);
            return url + "?v=" + String.Format(File.GetLastWriteTime(path).ToString("MMddyyhhmmss"));
        }
        catch
        {
            return url;
        }
    }

,您的代码将如下所示

<img src="<%= VersionCssUrl("your src".ToString()) %>" />

现在,解释你知道会发生什么,这会是每次都会请求文件,但它会检查你的文件的修改日期,所以如果没有,你将拥有前一个文件更改肯定从缓存中加载 .....

如果您的文件已更改会自动加载新文件,这一切都取决于您的日期时间......

我希望这可以帮助你... ...)

答案 1 :(得分:0)

我找到了一个适合我的简单解决方案:)

您可以查看来源here

我所做的是将datetime.now附加为@dholakiyaankit建议但是在另一个地方

 string fileName = FileUpload1.FileName;
                    FileUpload1.PostedFile.SaveAs(FolderPath +assoid);
                    string imagePath = "server path" +assoid;
                    face_crop_original.Src = imagePath+"?"+DateTime.Now;

注意:这里我的imagepath变量将是“xxxxxx.jpg”所以

 face_crop_original.Src = imagePath+"?"+DateTime.Now;

将是"http://xxxxxxxx.com/imagename.jpg?Randomnumber"

这使我能够上传具有相同名称的图像(USERID +“Profilepic”),并且我不需要编写用于删除旧文件的代码,因为名称将相同并且将在服务器中替换它!