我目前正在开发一个PHP函数,它通过AJAX调用。它将Base64-Strings转换为图像。问题是,ajax调用将base64-String回显到前端,而不仅仅是我的其他输出。
图像在服务器上创建,完全没有问题。但是在网站上,你开始这个动作(通过ajax-调用)不仅返回
"done <br />"
但也是整个base64-图像的字符串。
AJAX Call看起来像这样:
jQuery(document).ready(function($) {
$('#lii-form').submit(function() {
data = {
action: 'lii_map_images'
};
$.post(ajaxurl, data, function(response){
$('#lii_log').html(response);
});
return false;
});
});
PHP函数看起来像这样:(一切正常,除了base64- string-输出[不应该输出])
$imgUrl = $aduser -> getFoto();
$imgUrl = substr( $imgUrl, 0, -3 );
error_log($imgUrl); // tried it without this line, still prints
// turn String to image
$data = str_replace('data:image/jpeg;base64,', '', $base64_string);
$data = str_replace(' ', '+', $data);
$data = base64_decode($data);
$img_data = imagecreatefromstring($data);
$file = $uploaddir."/".$filename;
imagejpeg($img_data, $file);
imagedestroy($img_data);
echo "done <br />";
我正在使用Wordpress,顺便说一句。
修改
输出如下:
编辑2
我试图从ajax调用中删除响应:
$.post(ajaxurl, data, function(response){
$('#lii_log').html(response);
});
到
$.post(ajaxurl, data, function(response){
});
但它仍显示图像数据。
编辑3
Image-data似乎更像是一个原始的jpeg数据而不是base64。