【问题标题】:How can I *make* this image refresh after it is uploaded上传后如何*使*此图像刷新
【发布时间】:2011-04-13 11:58:50
【问题描述】:

我允许 ASP.NET 网站上的管理人员上传他们自己的图片以显示给该网站的用户。这并不难:只需使用基本的文件上传控件即可:

<img src="<%#ImageFile%>" border='0' width="150" alt="" height="150" /> <-- Displays the image
<br />
<br />
Upload Picture: <input id="myFile" type="file" name="myFile" runat="server" size="60" />&nbsp;&nbsp;
<asp:button id="DoFileUploadBtn" Height="24" runat="server" Text="Upload" onclick="DoFileUploadBtn_Click"></asp:button>

图片以工作人员ID加“.jpg”命名。因此,ID 为 1 的员工的结果图像是 1.jpg。这是使用上面的标签显示的。

有人第一次上传图片时效果很好。但是,如果他们更改图像,则会删除旧图像,正确上传文件并刷新页面。但是,浏览器仍然显示旧图像。我必须手动点击浏览器中的刷新按钮才能显示新图像,因为很明显,浏览器认为此特定页面上名为“1.jpg”的图像必须是它存储的图像。

使用带有 NoStore 和 Duration="1" 的 OutputCache 标记来(尝试)确保页面上没有任何内容被缓存但无济于事:

<%@ OutputCache NoStore="true" Duration="1" VaryByParam="none" Location="none" %>

因此问题是:我需要做什么来确保在这种情况下显示 new 图像?我不想重命名图像!有许多地方依赖于以员工 ID 命名的图像。

【问题讨论】:

    标签: html file-upload


    【解决方案1】:

    最简单和最可靠的方法是在包含版本号的 src 属性的 url 中添加一个查询字符串。您可以使用上传图像的日期/时间的编码,或文件系统上图像文件的最后更改日期/时间。

    所以属性应该是

    src="&lt;%#ImageFile%&gt;?v=&lt;%#ImageFileLastChangedDateTime%&gt;"

    【讨论】:

    • 我同意,如果您在后面的代码中加载数据,您也可以使用 Guid,替换 =/+ 符号。
    • 谢谢!非常简单优雅 - 正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 2017-05-31
    • 2014-06-22
    • 1970-01-01
    • 2010-09-24
    • 2011-06-25
    • 2013-11-16
    • 1970-01-01
    相关资源
    最近更新 更多