使用 ajax 和 laravel 上传多个文件无效
Upload multiple file with ajax and laravel not work
我的代码有问题。问题是当我使用 Jquery Ajax(正面)和 Laravel(背面)上传多个文件时,它只上传了一个文件而不是所有文件。
index.blade.php (form)
<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 logic @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());
谢谢。
我认为问题在于您在这两种情况下都使用 time()
生成随机文件名。由于每一行可能花费不到一秒,time()
将 return 两者的值相同,这意味着文件#2 将与文件#1 具有相同的名称并将覆盖它。
尝试使用不同的文件名生成,也许只是像 file1
和 file2
这样的静态名称而不是 time()
,或者使用 [=] 中提到的技术之一生成随机文件名15=].
我的代码有问题。问题是当我使用 Jquery Ajax(正面)和 Laravel(背面)上传多个文件时,它只上传了一个文件而不是所有文件。
index.blade.php (form)
<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 logic @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());
谢谢。
我认为问题在于您在这两种情况下都使用 time()
生成随机文件名。由于每一行可能花费不到一秒,time()
将 return 两者的值相同,这意味着文件#2 将与文件#1 具有相同的名称并将覆盖它。
尝试使用不同的文件名生成,也许只是像 file1
和 file2
这样的静态名称而不是 time()
,或者使用 [=] 中提到的技术之一生成随机文件名15=].