javascript - 通过ajax向服务器发送base64图像

标签 javascript php ajax laravel base64

我已经从那里构建了一个图像裁剪工具,我想将该 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/

相关文章:

javascript - 在 facebox 和 jquery 中选择复选框?

php - 在 iOS 中检索 SQL 数据

php - 如果页面包含 2 个提交按钮,如何构建页面

javascript - .change() 处理程序使表单需要两次点击才能提交

javascript - 用以前保存的元素替换元素(选择框)

javascript - 需要拖放帮助

javascript - onclick 将值传递给弹出模式

Ajax PUT 请求导致在 Rails 应用程序中注销。为什么?

php - 使用 ajax 的 Codeigniter 分页

javascript - 如何对 Angular-UI Bootstrap Modal 组件的 'resolve' 属性进行单元测试