doukong1901 2016-01-24 08:42
浏览 61

Dropzone.js + Laravel - 多文件上传不起作用(仅适用于一个文件)

I want to upload multiple files with AJAX with help of Dropzone.js plugin.

What I have done is -

HTML (view)-

<div class="dropzone" id="add-slide-image">
</div>

JS-

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("div#add-slide-image",
                    {
                        url: baseUrl+"/slide/uploadimage",
                        params: {
                            _token: csrfToken
                        },
                        maxFilesize: 3, // MB
                        maxFiles:40,                 //Trigers "maxfilesexceeded" event
                        acceptedFiles:'image/*',
                        method: "post",
                        addRemoveLinks: true,
                        paramName: "file",
                        uploadMultiple: true
                    });

Controller-

public  function storeImageFromClientComputer(Request $request)
{
  //return $request->file('file');//Input::file('droped_images');
      $files = $request->file('file');
      $names = [];

      foreach ($files as $file)
      {
        $names = $file->getClientOriginalName();
      }
      return $names;
    /*//$files=$request->file('images');
    $file=$request->file('file');

    if($file)
    {
        $random_original_image_name=str_random(30).".".$file->getClientOriginalExtension();
        $file->move(public_path().'/uploads/userfiles/images/',Auth::id()."-".$random_original_image_name);
        $original_image_name=base_path()."/public/uploads/userfiles/images/".Auth::id()."-".$random_original_image_name;
        $thumb_image_name=base_path()."/public/uploads/userfiles/thumbs/".Auth::id()."-".$random_original_image_name;
        if(file_exists($original_image_name)){
            $thumb=Image::make($original_image_name)->resize(200,null,function($constraint){
                $constraint->aspectRatio();
            });
            $thumb->save($thumb_image_name);

            $id=UserSlidePhoto::insertGetId([
                'user_id'=>Auth::id(),
                'social_image_id'=>0,
                'original_image_name'=>Auth::id()."-".$random_original_image_name,
            'thumbnail_name'=>Auth::id()."-".$random_original_image_name
            ]);
            $image_info=UserSlidePhoto::find($id);
            return  response()->json($image_info,200);
        }
    }
  return  response()->json("ERROR",400);*/
}

This controller is only for testing if all files are received. I am getting only one files from here. Commented codes are for real file upload.

I am always getting only one file in the loop.

CDN of Dropzone are added from here (CSS + JS).

Can anyone please help?

Thanks in advance for helping :)

  • 写回答

1条回答 默认 最新

  • dongmaomou4117 2016-01-24 09:39
    关注

    I have solved it like this-

    JS-

    Dropzone.autoDiscover = false;
    var myDropzone = new Dropzone("div#add-slide-image",
                        {
                            url: baseUrl+"/slide/uploadimage",
                            params: {
                                _token: csrfToken
                            },
                            maxFilesize: 3, // MB
                            maxFiles:40,
                            parallelUploads: 10000,
                            acceptedFiles:'image/*',
                            method: "post",
                            addRemoveLinks: true,
                            paramName: "file",
                            uploadMultiple: true
                        });
    

    Controller (PHP) -

    public  function storeImageFromClientComputer(Request $request)
    {
          $files = $request->file('file');
          $no_of_files = count($files);
          /*foreach ($files as $file)     //Don't know why this 'foreach' is not working
          {
            $file->getClientOriginalName();
          }*/
          if($no_of_files==0)
          {   //To check if any in-essential AJAX is called
            return "Valueless Calling !!!!!!";
          }
          for($i=0;$i<$no_of_files;$i++)
          {
            $file = $files[$i];//->getClientOriginalName();
            if($file)
            {
                $random_original_image_name=str_random(30).".".$file->getClientOriginalExtension();
                $file->move(public_path().'/uploads/userfiles/images/',Auth::id()."-".$random_original_image_name);
                $original_image_name=base_path()."/public/uploads/userfiles/images/".Auth::id()."-".$random_original_image_name;
                $thumb_image_name=base_path()."/public/uploads/userfiles/thumbs/".Auth::id()."-".$random_original_image_name;
                if(file_exists($original_image_name))
                {
                    $thumb=Image::make($original_image_name)->resize(200,null,function($constraint){
                        $constraint->aspectRatio();
                    });
                    $thumb->save($thumb_image_name);
    
                    $id=UserSlidePhoto::insertGetId(
                                                      [
                                                        'user_id'=>Auth::id(),
                                                        'social_image_id'=>0,
                                                        'original_image_name'=>Auth::id()."-".$random_original_image_name,
                                                        'thumbnail_name'=>Auth::id()."-".$random_original_image_name
                                                      ]
                                                    );
                    $image_info=UserSlidePhoto::find($id);
                }
            }
            else
                return  response()->json("ERROR",400);
          }
        return  "SUCCESS";
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line