0

我将图像保存在我的数据库字段中,例如data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAg......

当我 <cfimage action="writeToBrowser" source="#myField#">在普通页面上显示图像时,它工作正常。在 cfdocument 中使用时,它不起作用。我已经看到了一些类似的问题,但没有看到其中任何一个对我有用。我试过<img src="#myField#" />但没有任何运气。有人得到这个工作吗?

谢谢

4

2 回答 2

1

当我在此之前看到此内容时,该服务器上的CF“浏览器”无法通过/CFFileServlet/_cf_image/_cfimg-...PNG该框上的环回连接到URL。确切的原因和解决方案将取决于您的 Web 服务器、站点配置、SSL、防火墙、路由、DNS 都是如何设置的。

您是否在 CF Admin 中查看了带有图像错误的请求的错误日志?如果您在那里没有任何线索,那么帮助诊断失败的一种方法是将您的<cfimage action="writeToBrowser"代码包装在 a <cfsavecontent>or<cfxml>标记中以提取写入的临时图像的 src URL,然后查看如果您尝试点击相同的 URL 会得到什么结果通过cfhttp来自服务器的调用 - 您应该遇到 cfdocument 遇到的相同问题,但您将能够转储任何错误以进行故障排除。

根据您的情况,以下方法之一应该有效:

  1. 如果 CF 浏览器无法解析自己的主机名,则将该站点的域添加到服务器的本地 HOSTS 文件中;
  2. 如果从盒子本身导航到而不是从外部世界导航到时使用不同的 vhost / IIS 站点,则确保 /CFFileServlet/ 映射在该站点上仍然可见;
  3. 如果 cfdocument/cfhttp 出现 SSL 错误,即如果您的站点正在使用(或将 http 重写为)https 来处理这些图像请求,那么请确保您的站点的证书受到您的 CF 密钥库的信任;
  4. 检查您的防火墙配置是否阻止这些内部请求。

如果您无权解决上述环境类型问题,其他较小的解决方法:

file:///a)仅与 cfdocument 一起使用时,将 src URL 从相对 URL 重写为绝对URL。

b) 如果localhost在您的服务器上可见到您的站点(端口 80 或其他)的映射,那么您可以尝试重写 src URL 以使用它而不是 FQDN。

c) 不使用 writeToBrowser,而是将 cfimage 输出写入您可以证明可与 cfdocument/cfhttp 一起使用的路径,并输出您自己的 img 标签以从该路径提供图像。

根据我的经验,您会看到很多关于 cfdocument 和图像路径以及使用的帖子localUrl=true——但是在涉及 cfimage writeToBrowser 的地方,我总是发现我需要使用localUrl=false和依赖绝对 URL。

于 2019-11-05T15:02:54.030 回答
0

只需在您的 cfimage 标签中使用 isBase64="yes" 属性。像这样,

<cfimage isBase64= "yes" action = "writeToBrowser" source="#myField#" >
于 2019-12-05T13:51:13.280 回答