我使用html2canvas.js從頁面上的div創建<canvas>
圖像。我想要做的是通過ajax將渲染後的base64圖像發送到cfc,這樣我就可以將圖像保存到服務器上的文件夾中,並將文件路徑返回到頁面。通過ajax發送base64圖像數據到cfc
我遇到的問題是,當我將base64編碼數據發送到cfc時,cfc會解釋數據,但會在數據中出現多個「[invalid]」實例。
如果我只是將圖像發佈到DOM,圖像渲染就好了。這裏是一個要點的鏈接,它具有創建的正常圖像與從傳遞給cfc的參數轉儲的圖像相比:https://gist.github.com/ronnieduke/d83dfb3e31677191f88e
這裏是我正在運行的Ajax(其中img.src是張貼在上面的鏈接畫布數據)
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");
\t \t
var data = new FormData();
data.append('imgData',image.src);
\t \t
// 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方面的各種不同的編碼/解碼,並沒有任何工作。任何想法或見解將不勝感激!
由於提前,
UPDATE: 的問題,其實是用 'QSS' 是對XSS在村中的變量。一旦我將我的settings.ini中的字段名稱作爲例外添加,數據通常會發生。
您是否已經在CFIDE管理中打開了「啓用全局腳本保護」功能? –
我認爲這個網站是在Railo上,所以我必須檢查。你認爲它應該打開還是關閉? – user3576557
我在CF上關閉它,因爲它檢查傳遞給CF的數據並替換它認爲是危險的東西。請參閱[鏈接](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d69.html) –