Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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报告输入参数_Coldfusion_Coldfusion 9_Cfreport - Fatal编程技术网

无法将图像绑定到ColdFusion报告输入参数

无法将图像绑定到ColdFusion报告输入参数,coldfusion,coldfusion-9,cfreport,Coldfusion,Coldfusion 9,Cfreport,我正在使用ColdFusion Report Builder for CF9,并尝试将图表作为PNG图像传递到报表中。这是我的CFML代码: <cfchart format="png" name="chartImage"> <cfchartseries type="bar" query="chart" itemcolumn="title" valuecolumn="level"> </cfchart> <cfreport format="pdf"

我正在使用ColdFusion Report Builder for CF9,并尝试将图表作为PNG图像传递到报表中。这是我的CFML代码:

<cfchart format="png" name="chartImage">
    <cfchartseries type="bar" query="chart" itemcolumn="title" valuecolumn="level">
</cfchart>
<cfreport format="pdf" template="report.cfr" name="grid">
    <cfreportparam name="reportTitle" value="#reportType.title#">
    <cfreportparam name="chartImage" value="#chartImage#">
</cfreport>

在CF Report Builder中,我定义了一个名为
chartImage
的输入参数,并将其设置为
BLOB
(也尝试了类型
Image
)的类型,如下所示

我遇到了这个错误,但未能克服它:

报表数据绑定错误不兼容[B]分配给参数的值 ColdFusionReport数据集中的图表图像

我还将参数类型更改为
String
,传入一个base-64字符串,然后在报告中将其转换为二进制,但这会抛出一个错误,并显示一条无用消息
[B


如何将此图像作为输入参数正确绑定?

我想,对这个问题缺乏兴趣说明了CF Report Builder的流行。虽然我无法克服绑定错误,但我确实找到了合理的解决方法

我没有将图像直接绑定为二进制值,而是将图表图像写入临时目录,然后将该路径作为字符串参数传递到报表中。然后报表可以从文件系统中找到图像,并将其毫无困难地附加到报表中。一旦运行报表,我将从文件系统中删除图表em确保一切保持整洁

以下是此解决方案的更新代码:

<cfchart format="png" name="chartImage">
    <cfchartseries type="bar" query="chart" itemcolumn="title" valuecolumn="level">
</cfchart>

<cfset chartImageFile = getTempDirectory() & '\' & createUUID()>
<cfset fileWrite(chartImageFile, chartImage)>

<cfreport format="pdf" template="report.cfr" name="grid">
    <cfreportparam name="reportTitle" value="#reportType.title#">
    <cfreportparam name="chartImage" value="#chartImageFile#">
</cfreport>

<cfset fileDelete(chartImageFile)>


它不是很优雅,但是关于CF Report Builder的任何内容都不是特别优雅。

我知道这已经很旧了,CF Report Builder正在被弃用。但是,我最近不得不想出一个解决方案。CF Report Builder的图像参数不喜欢字节数组、Coldfusion自己的图像类或imageGetBlob()的结果(尽管其中一个选项被称为blob)

它看起来像是一个Java ByteArrayInputStream

createObject("java", "java.io.ByteArrayInputStream").init(chartImage.getImageBytes('png'))
我试着这样做,但它给出了一个错误,就像在截图上一样。你知道吗?