1
我需要使ajax提交一些数据,包括图像的base64字符串,这是从画布渲染的。Grails - 无法提交base64 img
当提交我期待在Chrome中检查,一切的网络面板看起来很好,在“表单数据”,它列出所有我要提交的数据。
但Grails中我不能得到的数据,有没有在params
,只是控制器名称和动作名称。因此,我用简单的params.dataName
得到的一切都是空的。
我想有一些与POST请求的大小,但我不敢肯定,因为我已经没有Ajax这样做过。
这是我上传的代码jQuery的AJAX:
var imgBase64String = canvas.toDataURL("image/png");
imgBase64String = imgBase64String .replace('data:image/png;base64,', '');
var submitData = $(form).serializeArray();
submitData.push({name: "webImage", value: imgBase64String })
$.ajax({
type: 'POST',
url: '${createLink(action: 'myAction')}',
data: submitData,
dataType: "html",
success: function(data){//Success code},
});
UPDATE
我在服务器端的代码,它无法在简单的步骤,以获取params
数据:
def myAction= {
def paramData = params
log.info "paramData: " + paramData
def url = params.url
def email = params.email
def webImage = params.webImage
log.info "param: url = " + url
log.info "param: email = " + email
log.info "param: webImage = " + webImage
//Other implement code
}
和输出:
2012-10-08 16:31:28,988 [http-bio-8080-exec-5] INFO myController - paramData: [action:myAction, controller:myController]
2012-10-08 16:31:28,989 [http-bio-8080-exec-5] INFO myController - param: url = null
2012-10-08 16:31:28,989 [http-bio-8080-exec-5] INFO myController - param: email = null
2012-10-08 16:31:28,989 [http-bio-8080-exec-5] INFO myController - param: webImage = null
我试图提交的base64映像的大小是1998720,不知道这个问题。
非常感谢。
是应该,但它不是,因为'params.img'为空,甚至'params.email'也为空值,这就是我所面临的问题。 ;( – BMH
你可以发布你的控制器的动作代码?并且是你的gsp的动作是具有上传动作的控制器的一部分(在你的情况下是'myAction') - 因为我在你的代码中看到你没有给你的' createLink()'标记 –
yes我确定这个动作被调用的正确,我用控制器代码更新了我的问题 – BMH