我允许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" />
<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命名。
答案 0 :(得分:3)
最简单,最可靠的方法是在包含版本号的src属性的url中添加查询字符串。您可以使用上传图像的日期/时间的编码,或文件系统上图像文件的上次更改日期/时间。
所以属性就像
src="<%#ImageFile%>?v=<%#ImageFileLastChangedDateTime%>"