2011-12-19 45 views
2

几个小时前,我发现我可以轻松地通过html5文件api和coldfusion之间的通信,通过传递由文件api创建的DataUrl通过表单属性并让coldfusion为我写入图像文件到服务器。coldfusion拒绝解码base64图像

这工作得很好。

但是,它拒绝解码这些传递的base64字符串。我已经测试了其他解码器中的base64字符串,并且它们正确显示图像。我没有改变任何代码。那么任何人都可以告诉我这里发生了什么..?

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

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

+1

不太足够的信息来熄灭呢。我们需要看到a)你得到的确切的错误信息,以及b)#attributes.image#的物理值是什么(cfabort就在这个标记调用之前,将它转储到屏幕上,将它添加到这个问题描述中) – 2011-12-19 15:55:25

回答

2

如果您所做的只是按原样保存,您可以跳过<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