我在我的一个项目中使用DropzoneJS。我正在使用laravel来处理文件上传的后端。我在表单中使用了div并将dropzone类添加到其中。
<div class="col-md-12 dropzone file_upload"></div>
它工作正常,但只上传了一个文件。我希望它能同时上传多个文件。
我已将dropzone配置中的parallelUploads
选项设置为10
,将maxFiles
选项设置为10
。
这是我的dropzone配置代码:
$("div.file_upload").dropzone({
url: upload,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
autoProcessQueue: true,
addRemoveLinks: true,
uploadMultiple: true,
params: {
"model_id": 1,
"user_id" : 2
},
maxFiles: 10,
parallelUploads: 10,
});
下面是我的后端代码
Controller.php这样
public function uploadPhoto(Request $request){
foreach ($request->file('file') as $file) {
$filename = uniqid().'.'.$file->getClientOriginalExtension();
$file->move('images/booking', $filename);
//save details to db
$photo= new InspectionPhotos();
$photo->inspection_id = $request['inspection_id'];
$photo->product_id = $request['product_id'];
$photo->photo_path = $filename;
if($photo->save()){
return response()->json([
'message' => 'OK'
]);
}
}
}
答案 0 :(得分:1)
问题是Controller.php
中的return语句。
保存第一个文件后,函数uploadPhoto()返回,永远不会保存第二个文件。
将save()
函数包装在try-catch
中并在catch块中返回错误状态,并适当地处理前端的错误。您可能还希望在$file->move()
中使用try-catch
,因为它也可能会引发错误。
最后,将return
语句移出foreach
以返回成功状态。
很高兴答案帮助了你,欢呼!