通过ajax将base64图像数据发送到cfc
send base64 image data to cfc via ajax
我正在使用html2canvas.js从页面上的div创建<canvas>
图像。我想做的是通过ajax将渲染的base64图像发送到cfc,这样我就可以将图像保存到服务器上的文件夹中,并返回页面的文件路径。
我遇到的问题是,当我将base64编码的数据发送到cfc时,cfc会解释数据,但数据中有几个"[无效]"的实例。
如果我只是将图像发布到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");
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中XSS的一个变量。一旦我在settings.ini中添加了字段名作为例外,数据就会正常显示。
事实上,"QSS"是Mura中XSS的一个变量。一旦我在settings.ini中添加了字段名作为例外,数据就会正常显示。
J.Dean更新示例settings.inicfm行:
scriptprotectexceptions=eventid,body
这将告诉Mura在执行XSS黑名单时忽略这些字段。在我的例子中,eventid字段有一长串字符,碰巧其中有QSS,这让我间歇性头痛。
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- React中的数据集表示
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 通过ajax将base64图像数据发送到cfc