0

我正在使用 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它时,它会从缓存中获取旧图像!请帮忙。

4

2 回答 2

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()) %>" />

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

如果您的文件已更改,它将自动加载新文件,这完全取决于您的日期时间.....

我希望这会对你有所帮助... :)

于 2013-11-09T11:42:37.713 回答
1

我找到了一个对我有用的简单解决方案:)

您可以在此处查看来源

我所做的是我datetime.now按照@dholakiyaankit 的建议附加了,但在不同的地方

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

注意:这里我的图像路径变量将是“xxxxxx.jpg”所以

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

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

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

于 2013-11-09T11:49:51.397 回答