.ajax() と php を使用してキャンバス画像データを保存できましたが、ケーキには保存できませんでした。私が行った方法は次のようなものです。キャンバスの描画を作成した後、ユーザーがフォームの「送信」ボタンをクリックすると実行される JavaScript があります。
var formdata = $("form").serialize();
var data = document.getElementById("canvasElement").toDataURL();
formdata += "&img=" + data;
$.ajax({
type: "POST",
url: "process.php",
data: formdata,
success: function() {
$('body').prepend('<div class="alert">Your bit of data was successfully saved.</div');
$('.alert').delay(2000).slideUp('slow');
},
error:function (xhr, ajaxOptions, thrownError){
alert("Error Status: " + xhr.status + " Thrown Errors: "+thrownError);
}
次に、process.php が画像データを処理し、ファイルに保存します。顕著な部分は次のとおりです。
$img = $_POST['img'];
// remove header information that's sent with the encoded data
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = "images/" . uniqid() . '.png';
これはすべて私が望んでいたように機能します。Cakephp フレームワークでこれを行うにはどうすればよいですか? 通常の Cake フォーム送信の代わりに、次のような ajax 送信に Js ヘルパーを使用できることを読みました: echo $this->Js->submit('Save'); 画像データを保存できる送信関数に渡すことができる引数はありますか? より良い方法はありますか?