[英]send base64 image data to cfc via ajax
我正在使用html2canvas.js從頁面上的div創建<canvas>
圖像。 我想做的是通過ajax將渲染的base64圖像發送到cfc,這樣我實際上可以將圖像保存到服務器上的文件夾中,並將文件路徑返回到頁面。
我遇到的問題是,當我將base64編碼的數據發送到cfc時,cfc會解釋該數據,但在數據中包含“ [invalid]”的多個實例。
如果我只是將圖像發布到DOM,則圖像呈現就很好。 這是一個要點的鏈接,該要點具有創建的普通圖像與我從傳遞給cfc的參數中轉儲的圖像相比所創建的圖像: https : //gist.github.com/ronnieduke/d83dfb3e31677191f88e
這是我正在運行的Ajax(其中img.src是上面鏈接中發布的canvas數據的結果)
var image = new Image(); image.id = 'pic'; // This results in the base64 data posted in image-normal.txt in the gist image.src = canvas.toDataURL("image/png"); var data = new FormData(); data.append('imgData',image.src); // Genrate images in cfc $.ajax({ url: 'my.cfc?method=generateImage', type:'POST', data:data, dataType:'JSON', processData: false, cache:false, async:false, contentType: false, success:function(data){ console.log(data); }, error:function(result){ alert(result.responseText); } });
這是我的cfc:
<cffunction name="generateImage" output="true" access="remote" returnFormat="JSON">
<cfargument name="imgData" required="true" type="string">
<cfset request.acceptExt = 'image/jpg,image/gif,image/png' />
<cfset image = imageReadBase64(arguments.imageData)>
<cfimage
action="write"
destination="image.png"
source="#image#"
overwrite="yes"
>
發生的情況是imageReadBase64()
函數拋出一個錯誤,它無法讀取PNG數據。 當我轉儲arguments.imgData
,就是在上面要點中將結果發布在img-cfc.txt中的時候。 那就是包含所有[INVALID]實例的內容。
我發現有趣的是,當比較base64映像的兩個版本時,我注意到無論cfc版本中具有[INVALID]的位置,字母“ QSS”(在各種情況下)都會出現在普通版本中。
例如:
正常: ...6s9QSSpN...
從cfc參數中轉儲: ...6s9[INVALID]pN...
正常: ...CwKGgwqsSH7Qyq1g...
從cfc參數轉儲: ...CwKGgw[INVALID]H7Qyq1g...
我期望特殊字符之類的東西,但是我不確定“ QSS”與什么有關。
我已經在JS端和CFC端嘗試了各種不同的編碼/解碼,但是沒有任何效果。 任何想法或見識將不勝感激!
提前致謝,
更新:問題實際上是“ QSS”是Mura for XSS中的變量。 一旦將字段名稱添加到settings.ini中作為例外,數據就可以正常顯示了。
實際上,問題在於“ QSS”是Xura的Mura中的變量。 一旦將字段名稱添加到settings.ini中作為例外,數據就可以正常顯示了。
從J. Dean示例settings.ini.cfm行更新:
scriptprotectexceptions=eventid,body
這將告訴Mura在進行XSS黑名單時忽略這些字段。 就我而言,eventid字段中的字符串確實很長,恰好包含QSS,這使我感到間歇性的頭痛。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.