Dropzone JS只上传一个文件

时间:2016-11-22 09:35:40

标签: javascript php jquery laravel

我在我的一个项目中使用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'
            ]);
        }

    }

}

1 个答案:

答案 0 :(得分:1)

问题是Controller.php中的return语句。

保存第一个文件后,函数uploadPhoto()返回,永远不会保存第二个文件。

save()函数包装在try-catch中并在catch块中返回错误状态,并适当地处理前端的错误。您可能还希望在$file->move()中使用try-catch,因为它也可能会引发错误。

最后,将return语句移出foreach以返回成功状态。

很高兴答案帮助了你,欢呼!