通过ajax发送base64图像数据到cfc
我使用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中的字段名称作为例外添加,数据通常会发生。
这个问题实际上是因为'QSS'是Mura中XSS的一个变量。一旦我将我的settings.ini中的字段名称作为例外添加,数据通常会发生。从J.院长 例settings.ini.cfm线
更新:
scriptprotectexceptions=eventid,body
这将告诉村做了XSS黑名单时忽略这些字段。在我的情况下,eventid字段有很长的一串字符,碰巧有QSS在其中,导致我巨大的间歇性头痛。
您是否已经在CFIDE管理中打开了“启用全局脚本保护”功能? –
我认为这个网站是在Railo上,所以我必须检查。你认为它应该打开还是关闭? – user3576557
我在CF上关闭它,因为它检查传递给CF的数据并替换它认为是危险的东西。请参阅[链接](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d69.html) –