Загрузка нескольких файлов с ajax и laravel не работает - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть проблемы с моим кодом. Проблема в том, что когда я загружаю несколько файлов с Jquery Ajax (спереди) и Laravel (сзади), загружается только один файл, а не все файлы.

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 file logi c @ 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());

Спасибо.

1 Ответ

1 голос
/ 08 февраля 2020

Мне кажется, проблема в том, что вы используете time() для генерации случайного имени файла в обоих случаях. Поскольку каждая строка, вероятно, займет менее секунды, time() вернет одинаковое значение для обоих, означая, что файл # 2 будет иметь то же имя, что и файл # 1, и переопределит его.

Попробуйте использовать генерация различных имен файлов, может быть просто stati c имен, таких как file1 и file2 вместо time(), или генерирование случайных имен файлов с помощью одного из методов, упомянутых в этой теме .

...