Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 来自cfdocument中二进制文件的cfimage_Coldfusion_Cfdocument_Cfimage - Fatal编程技术网

Coldfusion 来自cfdocument中二进制文件的cfimage

Coldfusion 来自cfdocument中二进制文件的cfimage,coldfusion,cfdocument,cfimage,Coldfusion,Cfdocument,Cfimage,我正在动态地编写PDF,并在文档上创建一个二维码,以便进行编辑 我将我的cfdocument localurl=yes设置为包含一个不同的图像,这很好,但是因为我使用了一个API调用来获取qrCode的二进制文件,使用cfimage来显示图像,所以它只显示了一个红色的X <cfdocument format="PDF" overwrite="Yes" localUrl="yes" pageType = "letter"> <body> <cfoutput>

我正在动态地编写PDF,并在文档上创建一个二维码,以便进行编辑

我将我的cfdocument localurl=yes设置为包含一个不同的图像,这很好,但是因为我使用了一个API调用来获取qrCode的二进制文件,使用cfimage来显示图像,所以它只显示了一个红色的X

<cfdocument format="PDF"  overwrite="Yes" localUrl="yes" pageType = "letter">
<body>
<cfoutput>
<section id="header">

<img src="file:///#ExpandPath('images/header.png')#"/>
<cfimage action="writeToBrowser" source="#rc.qrCode#" />
</cfoutput>
</body>
</html>
</cfdocument>

源变量rc.qrCode是一个二进制响应,在我将其放入cfdocument之前,它可以完美地工作,它会生成一个像这样的url
http://mysite/CFFileServlet/_cf_image/_cfimg-7945382145198648283.PNG
作为图像源


我确信这与localurl和file:///有关,我只是不知道为什么不需要使用物理路径,而需要使用页面的相对路径。 例如 如果您在根文件夹的index.cfm和图像文件夹中的图像中编码

请注意,它不应该以根路径开始,而应该相对于您的文件

更新

writetoBrowser在内部将文件写入硬盘驱动器的临时位置(局部为C:\ColdFusion10\cfusion\tmpCache\CFFileServlet),并在将其呈现给浏览器时使用相对路径,如“/CFFileServlet/_cf_image/_cfimg1592404668342998556.PNG”,您可以说ColdFusion在内部将CFFileServlet目录映射到所有ColdFusion站点,但请注意前面的正斜杠,这使得localurl=true出现问题。因为localurl=true,所以需要指向文档的物理路径或相对路径


好主意是代替writetobrowser,您可以将相同的图像写入您所在位置的硬盘,并在img标记中给出物理路径。我不认为这会有任何性能问题,因为ColdFusion在使用writetobrowser属性时在内部执行相同的操作:)

问题不在于images/header.png,而在于使用cfimage标记将二进制文件转换为图像,这会在CFFileServlet上创建临时文件抱歉,我误解了您的问题。我已经更新了我的答案。