这是一个奇怪的事情,至少对我来说是这样。我正在将图像读入 cf 图像变量并将其保存为 session 变量:
<cfimage action="read" source="myPath/image.jpg" name="myImage" />
<cfset session.image = #myImage# />
我计划在某个时候操作该图像,这就是我将其保存到变量中的原因。无论如何,然后我用 cfcontent 对其进行流式传输:
<img id="photoPlaceholder" src="/#application.root_name#/administration/PhotoManagement/displayPhoto.cfm" width="500px" />
来自模板displayPhoto.cfm:
<cfcontent variable="#imageGetBlob(session.image)#" />
问题就在这里。第一次调用后,无论传递给哪个新图像,都会显示第一个检索到的图像。我尝试在 cfimage 标记之前销毁 session 变量,并且我已经验证每次都传递了正确的图像变量。显示新图像的唯一方法是刷新页面。
在我看来,cfimage 正在以某种方式缓存图像,并且每次对它的新调用都不会刷新变量 myImage。 CF 文档对此没有任何说明,谷歌也没有提出任何建议。
想法?
最佳答案
您的问题可能是客户端的。由于 img 标记中的 URL 不会更改 (...displayPhoto.cfm),因此您的浏览器不会发现您实际上指向新图像,因此它会继续提供缓存中已有的图像。
您可以尝试在 src 属性末尾添加一个随机的假参数,如下伪代码:
<img id="photoPlaceholder" src="/#application.root_name#/administration/PhotoManagement/displayPhoto.cfm?somevar=#aUniqueValue#" width="500px" />
您可以从随机数生成器或时间戳生成器创建 aUniqueValue 变量。
关于coldfusion - session 变量未使用新的 cfimage 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7365275/