2

几个小时前,我发现通过表单属性传递文件api创建的DataUrl,让coldfusion为我将图像文件写入服务器,我可以轻松地在html5文件api和coldfusion之间进行通信。

这工作得很好。

然而,现在它拒绝解码我传递的这些 base64 字符串。我已经在其他解码器中测试了 base64 字符串,它们可以正确显示图像。我没有对代码进行任何更改。所以谁能告诉我这里发生了什么..?

<cfimage source="#attributes.image#" action="write" destination="../images/new_image.png" isBase64="yes" overwrite="true">

编辑 20/12:今天,当我在工作时打开电脑时,它又开始工作了。我仍然不清楚昨天发生了什么。Coldfusion 返回的错误是:“文件似乎不是 base64 编码的”,它绝对是,我检查了不止一次。我传递给 cfimage 标记的 base64 字符串包含标题,就像您描述的那样。

4

1 回答 1

3

如果您所做的只是按原样保存它,您可以跳过<cfimage>标签并使用标签。增加了一堆开销,并且仅在您计划在保存之前修改图像时才有用。<cffile><cfimage>

例如。

<cffile action="write" file="C:\temp\test-image.jpg" output="#binaryDecode(base64data)#" addnewline="no">

或者尝试...

<cfset myImage = imageReadBase64(base64data)>
<cfimage action="write" source="#myImage#" destination="C:\temp\test-image.jpg">

你的 base64 字符串有标题吗?

例如。"data:image/jpg;base64,..."在字符串的开头?

从内存中,imageReadBase64() 支持带和不带标头的 base64 字符串。

http://www.cfquickdocs.com/cf9/#BinaryDecode

http://www.cfquickdocs.com/cf9/#ImageReadBase64

于 2011-12-20T01:15:38.257 回答