我已经从那里构建了一个图像裁剪工具,我想将该 base64 图像存储到服务器。我已经通过 Ajax 发送了它。图像以 jpg 格式存储。但问题是它已损坏。谁能建议我解决方案是什么?
这是我的 ajax 调用:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
method: 'post',
url: 'updateProfilePicture',
cache: false,
contentType: "application/json; charset=utf-8",
data: {'image': encodeURIComponent(profileImageUrl)},
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
这里是将base64转换为普通图片并存储到服务器的 Controller :
public function updateProfile(Request $request)
{
$base64img = str_replace('data:image/jpeg;base64,', '', $request->Input(['image']));
$data = base64_decode($base64img);
$file = public_path() . '/users/' .'123123123.jpg';
file_put_contents($file, $data);
return \Response::json($data);
}
最佳答案
您没有发送 JSON,所以不要声称您发送的是 JSON。删除它。
contentType: "application/json; charset=utf-8",
您正在将一个对象传递给data
:
data: {'image': encodeURIComponent(profileImageUrl)}
当您传递一个对象时,jQuery 会将其编码为表单 URL 编码数据。
通过 encodeURIComponent
运行您的代码,您可以对数据进行双重 编码。
不要那样做。
data: {'image': profileImageUrl }
关于javascript - 通过ajax向服务器发送base64图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295965/