2011-12-19 92 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