0

次のコードを使用して、キャンバス イメージを .png ファイルに保存しています。

jQuery:

$(".save").click(function () {
    var canvas = $("#standard_canvas");
    var src = canvas[0].toDataURL("image/png");
    $.ajax({
        url: 'save.php',
        type: 'POST',
        data: {
            data: src
        },
        complete: function (data, status) {
            if (status == 'success') {
                alert("image saved!")
            }
        }
    });
});

[save.php]

<?php
$based64Image = substr($_POST['data'], strpos($_POST['data'], ',') + 1);
$image        = imagecreatefromstring(base64_decode($based64Image));
imagealphablending($image, false);
imagesavealpha($image, true);

$fileName = '';
if ($image != false)
  {
    $fileName = 'image/designs/' . time() . '.png';
    if (!imagepng($image, $fileName))
      {
        //          fail;
      }
  }
else
  {
    //          fail;
  }

?>

私がやりたいことは、新しいファイル名を ajax 呼び出しに戻して、それを使用して非表示の入力フィールドに入力できるようにすることです (これを顧客の注文と共に保存できます)。誰でも助けることができますか?

ありがとう。

4

2 に答える 2

1

画像アップロードの成功部分に次の行を追加するだけです:

echo $filename 

次に、ajax呼び出しで、

$.ajax({
    url: 'save.php',
    type: 'POST',
    data: {
        data: src
    },
    complete: function (data, status) {
        if (status == 'success') {
            alert("image saved!");
            alert("Filename : "+data);
            // Do anything with the file name here
        }
    }
});

これでうまくいくはずです。

于 2013-08-25T09:48:04.323 に答える
1

あなたのphpファイルで、あなたのファイル名を含むjson応答を作成することができます

  $data['filename'] = $fileName;
  echo json_encode($data);

そして、あなたのajax応答でそれを読んでください

$(".save").click(function () {
    var canvas = $("#standard_canvas");
    var src = canvas[0].toDataURL("image/png");
     $.ajax({
         url: 'save.php',
         type: 'POST',
         dataType: 'json',
         data: {
             data: src
         },
         success: function (data, status) {
             if (status == 'success') {
                 alert("image saved!")
                 var filename = data.filename //<--------
             }
         }
     });
});

編集: (顧客の注文と一緒に保存できます)

サーバー側のセッション変数にファイル名を保存することをお勧めします。これにより、クライアント フォームがファイル名を変更するのを防ぎます (隠しフィールドにある場合でも)。

于 2013-08-24T17:13:34.567 に答える