4

AJAX を使用してクライアント側から PHP サーバーに画像データ (data:image/png;base64) を送信する必要があります。私のAJAX呼び出しは次のようになります:(form_dataには画像が含まれています)

$.ajax({
    url: global_siteurl+'/save_image',
    data: form_data,
    dataType: 'json',
    type: 'post',
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    success: function (retval) {   
        process_save_image(retval);
    }
});

次に、エンコードされた画像データを BLOB としてデータベースに保存します (そうです - その背後には長い話があります!)。画像データを取得すると、破損しているようで、正しく表示されません。あたかも画像データに改行とスペースが導入されたかのように。ajax 呼び出しでパラメーターが欠落していますか? 何がうまくいかないのかについてのアイデアはありますか? 送信できる画像データのサイズに制限はありますか?

これを追いかけるのに4日間かかりました。

ミズ

4

2 に答える 2

1

この問題は、この投稿で説明 (および解決) されたものと同じであることが判明しました。

BLOB データは「+」をスペースに置き換えます

BLOB データを GET/POST するときに URL に対して安全にする必要があることがわかりました。PHP サーバー側では、上記の投稿で説明されている関数を使用しました。Javascript 側では、次の関数を使用しました。

http://notepad2.blogspot.com/2012/08/javascript-make-base64-encoded-string.html

+/= が置き換えられていることに気付くまで、エンコードされた画像データをよく見つめました。

于 2013-10-02T20:26:00.113 に答える
0

画像を表示するときにこれを試してください。

echo '<img src="data:image/png;base64,' . base64_encode($blob_data) . '"/>
于 2013-10-01T19:14:57.560 に答える