php - 使用ajax和laravel上传多个文件不起作用
问题描述
我的代码有问题。问题是当我使用 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());
谢谢。
解决方案
我认为问题在于您time()
在这两种情况下都使用生成随机文件名。由于每一行可能需要不到一秒的时间,time()
因此将为两者返回相同的值,这意味着 file#2 将与 file#1 具有相同的名称并将覆盖它。
尝试使用不同的文件名生成,可能只是静态名称,例如file1
andfile2
而不是,或者使用此线程time()
中提到的技术之一生成随机文件名。
推荐阅读
- sql-server - 用于游标循环更新触发数据的 TSQL 替代方案
- android - 更新后expo react-native获取本地文件不起作用
- javascript - 使用函数 onclick innerhtml
- c++ - 同步、线程安全接口的正确锁定模型
- android - 使用 WorkManager 下载文件
- reactjs - 是否可以通过 React 中使用的 className 过滤子项?
- aws-lambda - 使用 terraform 部署多个 lambda 函数
- delphi - 在 Delphi 中使用 SOAP VIES 时出现 401 Unauthorized
- mongodb - How to create a single connection to mgo and not reconnect every time
- react-native-android - 反应原生导航 v2