4

我需要使用 AJAX 从客户端将图像数据 (data:image/png;base64) 发送到我的 PHP 服务器。我的 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 数据用空格替换“+”

事实证明,当我 GET/POST 时,我需要使 blob 数据对 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 回答