キャンバスからレンダリングされた画像のbase64文字列を含むデータを送信するには、ajaxを送信する必要があります。
送信するとき、Chromeインスペクターのネットワークパネルを見ると、すべてが正常に表示されます。「フォームデータ」には、送信するすべてのデータが一覧表示されます。
しかし、Grailsではデータを取得できませんparams
。コントローラー名とアクション名だけが含まれています。したがって、私が単純で得るものはすべてparams.dataName
nullです。
投稿リクエストのサイズに何かがあると思いますが、以前にajaxを使用せずにこれを行ったことがあるので、よくわかりません。
これは、jqueryajaxを使用してアップロードするための私のコードです。
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},
});
アップデート
サーバー側の私のコードは、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ですが、これが問題かどうかはわかりません。
どうもありがとう。