【问题标题】:Upload multiple file with ajax and laravel not work使用ajax和laravel上传多个文件不起作用
【发布时间】:2020-02-08 02:23:03
【问题描述】:

我的代码有问题。问题是当我使用 Jquery Ajax(Front) 和 Laravel(Back) 上传多个文件时,它只上传了一个文件而不是所有文件。

index.blade.php(表单)

                <input type="file" name="file[]" class="form-control-file file-1">
                <input type="file" name="file[]" class="form-control-file file-2">

index.blade.php (Ajax Jquery)

  var data = new FormData();

  data.append('file[0]', $('.file-1')[0].files[0]);
  data.append('file[1]', $('.file-2')[0].files[0]);

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });

  $.ajax({
    url: '{{ url('/layanan/file/users/store') }}',
    type: 'POST',
    data: data,
    processData: false,
    contentType: false,
    success: function(response){
      mprogress.end();
      console.log(data);
    },
  });

php文件逻辑@store

    $request->file[0]->move(public_path('file'), time().'.'.$request->file[0]->extension());
    $request->file[1]->move(public_path('file'), time().'.'.$request->file[1]->extension());

谢谢。

【问题讨论】:

    标签: php jquery ajax laravel form-data


    【解决方案1】:

    我认为问题在于您在两种情况下都使用time() 生成随机文件名。由于每一行可能需要不到一秒的时间,time() 将为两者返回相同的值,这意味着 file#2 将与 file#1 具有相同的名称并将覆盖它。

    尝试使用不同的文件名生成,也许只是像file1file2这样的静态名称而不是time(),或者使用this thread中提到的技术之一生成随机文件名。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 2018-10-23
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多