Coldfusion 使用cfimage显示不带';我没有分机

Coldfusion 使用cfimage显示不带';我没有分机,coldfusion,cfdocument,cfimage,Coldfusion,Cfdocument,Cfimage,奇怪的一个 我正在研究一个生成PDF文件的过程,将来自不同来源的数据组合在一起。我需要完成的最后一个步骤是合并图像文件 这实际上相当简单,但我的问题是图像文件没有以文件扩展名存储。在本地,我可以更改文件名,但在生产环境中,这不是一个选项 因为文件名看起来像:B71637CB-A49C-0653-EF813918736BDEB7 这是行不通的: <cfimage action="writeTobrowser" source="#FilePath#> 您可以尝试创建一个cfm页面,使

奇怪的一个

我正在研究一个生成PDF文件的过程,将来自不同来源的数据组合在一起。我需要完成的最后一个步骤是合并图像文件

这实际上相当简单,但我的问题是图像文件没有以文件扩展名存储。在本地,我可以更改文件名,但在生产环境中,这不是一个选项

因为文件名看起来像:B71637CB-A49C-0653-EF813918736BDEB7

这是行不通的:

<cfimage action="writeTobrowser" source="#FilePath#> 

您可以尝试创建一个cfm页面,使用cfcontent输出您的内容,如下所示:

<cfcontent type="image/jpg" file="path/#fielpath#">

然后,您将包括该cfm页面作为图像的源,如中所示

<img src="myFancyImageOuputer.cfm?image=#filepath#">

这应该是可行的,但可能需要一些尝试和错误

Ray在这里有一些额外的提示:


您可以尝试创建一个cfm页面,使用cfcontent输出您的内容,如下所示:

<cfcontent type="image/jpg" file="path/#fielpath#">

然后,您将包括该cfm页面作为图像的源,如中所示

<img src="myFancyImageOuputer.cfm?image=#filepath#">

这应该是可行的,但可能需要一些尝试和错误

Ray在这里有一些额外的提示:


如果需要将图像嵌入PDF文档,请尝试HTML的内联图像功能:

<cfset fileLocation         = "/path/to/images/B71637CB-A49C-0653-EF813918736BDEB7">
<cfset imageContent         = fileReadBinary(fileLocation)>
<cfset imageContentAsBase64 = toBase64(imageContent)>

<cfoutput>
    <img src="data:image/jpeg;base64, #imageContentAsBase64#" />
</cfoutput>

如果需要将图像嵌入PDF文档,请尝试HTML的内联图像功能:

<cfset fileLocation         = "/path/to/images/B71637CB-A49C-0653-EF813918736BDEB7">
<cfset imageContent         = fileReadBinary(fileLocation)>
<cfset imageContentAsBase64 = toBase64(imageContent)>

<cfoutput>
    <img src="data:image/jpeg;base64, #imageContentAsBase64#" />
</cfoutput>

以下是最终有效的方法:

<cfdocument format="PDF" name="report" filename="#fileToDownloadimage#" overwrite="yes">
    <cfdocumentsection>
        <cfset fileObject = fileReadBinary('#FilePath#') />
        <cfset imageObject = imageNew(fileObject) />
        <cfimage action="writeTobrowser" source="#imageObject#">
    </cfdocumentsection>
</cfdocument>


亚历克斯的回答让我走上了正确的道路,所以我很高兴留下这些荣誉,因为我离这一点还差得远呢

以下是最终奏效的方法:

<cfdocument format="PDF" name="report" filename="#fileToDownloadimage#" overwrite="yes">
    <cfdocumentsection>
        <cfset fileObject = fileReadBinary('#FilePath#') />
        <cfset imageObject = imageNew(fileObject) />
        <cfimage action="writeTobrowser" source="#imageObject#">
    </cfdocumentsection>
</cfdocument>



亚历克斯的回答让我走上了正确的道路,所以我很高兴留下这些荣誉,因为我离这一点还差得远呢

WriteToBrowser只生成一个html
标记。尝试使用普通的
标记而不是cfimage。更进一步,我以前也遇到过类似的问题。解决方法非常简单。在ColdFusion 10及更高版本中,存在一个名为FileGetMimeType的函数,该函数读取文件的实际内容以确定其扩展名。WriteToBrowser只生成一个html
标记。尝试使用普通的
标记而不是cfimage。更进一步,我以前也遇到过类似的问题。解决方法非常简单。在ColdFusion 10及更高版本中,存在一个名为FileGetMimeType的函数,该函数读取文件的实际内容以确定其扩展名。(编辑)是的,但我想知道他们是否真的需要cfimage,因为它最终只生成一个html
标记@MrJdac-如果改用
会发生什么?在CF11中对我来说效果很好。Leigh-Alex的答案可能是你在这里的想法,嗯?嗯,我考虑过base64,但是。。不知道他们的图像有多大。我只是想知道一个基本的标记是否可以在这里起作用,因为它都是服务器端的(并且似乎在不指定mime类型的情况下工作).是的-但对于PDF生成,这可能几乎是同一件事-CFDOCUMENT必须抓取图像并以其为基础将其嵌入到文档中。此解决方案实际上与网站通常提供附件的方式非常相似。问题似乎在于试图让cfdocument解释这个文件名中没有.jpg的jpg文件是一个for reals图像文件。目前,我已经制定了一个可怕的解决方案,包括将文件复制到一个带有.jpg的新文件,合并该图像,然后将其删除。(编辑)True,但我想知道他们是否真的需要cfimage,因为它最终只会生成一个html
标记@MrJdac-如果改用
会发生什么?在CF11中对我来说效果很好。Leigh-Alex的答案可能是你在这里的想法,嗯?嗯,我考虑过base64,但是。。不知道他们的图像有多大。我只是想知道一个基本的标记是否可以在这里起作用,因为它都是服务器端的(并且似乎在不指定mime类型的情况下工作).是的-但对于PDF生成,这可能几乎是同一件事-CFDOCUMENT必须抓取图像并以其为基础将其嵌入到文档中。此解决方案实际上与网站通常提供附件的方式非常相似。问题似乎在于试图让cfdocument解释这个文件名中没有.jpg的jpg文件是一个for reals图像文件。目前,我已经制定了一个可怕的解决方案,包括将文件复制到一个带有.jpg的新文件中,合并该图像,然后将其删除。。这是一个很好的提示!我已经忘记了那个语法。很好,Alex,Alex-你确定这适用于CFDOCUMENT?我的意思是-你测试过它了吗?还是你建议他试试?因为它是有效的XHTML,我不明白为什么它不能与
cfdocument
一起工作。因为cfdocument将HTML标记解释为ADobe的pdf标记。。。而且它(臭名昭著)并没有实现HTML所能做的一切。是的,我想我必须收回我的话。它似乎在
cfdocument
中不起作用。。这是一个很好的提示!我已经忘记了那个语法。很好,Alex,Alex-你确定这适用于CFDOCUMENT?我的意思是-你测试过它了吗?还是你建议他试试?因为它是有效的XHTML,我不明白为什么它不能与
cfdocument
一起工作。因为cfdocument将HTML标记解释为ADobe的pdf标记。。。而且它(臭名昭著)并没有实现HTML所能做的一切。是的,我想我必须收回我的话。它似乎在
cfdocument
中不起作用。