簡體   English   中英

通過Ajax將base64圖像數據發送到cfc

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM