【问题标题】:Image upload in ajax and get base64 data用ajax上传图片并获取base64数据
【发布时间】:2021-08-03 10:55:13
【问题描述】:

我正在尝试在 laravel 中使用 ajax 上传图片。这是我的代码

<input type="text" name="item_name" class="form-control item_name">
<input type="file" name="item_image" class="form-control item_image">
<button type="button" class="btn btn-primary store_new_item"> Save </button>

阿贾克斯

$(document).on('click', '.store_new_item', function () {
var item_name = $('.item_name').val();

var data = new FormData();  
data.append('file', $('.item_image')[0].files[0]);
var size  =  $('.item_image')[0].files[0].size;
console.log(data);

$.ajax({
    url: '{{ url('/item/add-new-item') }}',
    type: "POST",
    enctype: 'multipart/form-data',
    //dataType: 'json',
    headers: {
        'X-CSRF-TOKEN': '{{ csrf_token() }}'
    },
    data: {
        item_name: item_name,
        item_image: data
    },

Laravel

  $item_image = base64_encode($request->get('item_image'));

显示错误 Uncaught TypeError: Illegal invocation in console 如何在控制器中获取 base64 数据?提前致谢

【问题讨论】:

  • 请更改您的 bcz base64 不是文件类型,它是文本类型发送
  • 我想发送用于文本类型的图像名称和用于另一个文件输入的图像

标签: jquery ajax laravel laravel-5


【解决方案1】:
$data = $request->get('item_image');
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$image     = \Image::make(base64_decode($data))->encode('jpg');
$imageName = md5($user->name . microtime()) . '.jpg';
$image->save(public_path() . $imageName);

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2014-02-14
    • 2013-11-03
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多