在php中排队多个文件上传

时间:2016-11-23 03:59:34

标签: php laravel file-upload laravel-5.2

我很抱歉,如果有人问我无法在google中找到正确的关键字。所以我决定在这里询问。

现在,我有一个内置的laravel上传功能,可以一次上传到20个图像,但客户希望一次只能有50个图像,所以我想我可以&每当客户想要同时增加最大上传量时,编辑php.ini会导致服务器崩溃。

是否有可能在php中上传像10个图像的队列,这第二个下一秒再次是10个图像,直到上传全部完成,因此服务器不会中断。

foreach ($request->file('image') as $key => $file) 
        {
            $filename = md5(time() . uniqid()) . '.' . $file->getClientOriginalExtension();

            $imagesize = getimagesize($file);

            if( ($imagesize[0] == 533 && $imagesize[1] == 800) == false && 
                ($imagesize[0] == 800 && $imagesize[1] == 533) == false 
              ) {
                $error++;
                continue;
            }

            $file->move('uploads', $filename);

            $data['image'] = url('uploads/' . $filename);

            $order_id = 1;

            $count = PropertyImages::where('property_id', $id)->count();

            if( $count > 23 )
            {
                return response()->json(['success' => false, 'msg' => 'Images must not exceed 24']);
            }

            $image = PropertyImages::where('property_id', $id)->orderBy('order_id', 'DESC')->first();

            if( $image )
            {
                $order_id = $image->order_id + 1;
            }

            $item = PropertyImages::create([
                'property_id' => $id,
                'filename' => $filename,
                'order_id' => $order_id
            ]);

            $items[$key]['id'] = $item->id;
            $items[$key]['filename'] = url('uploads/' . $item->filename);

       }

1 个答案:

答案 0 :(得分:0)

我不确定您用于上传图片的设置是什么,因此我假设您有一个包含20个文件输入字段的简单表单。

PHP.ini限制请求的大小(例如,post_max_size = 20M会将您的请求限制为20MB或max_input_vars = 20会将请求中的变量限制为20)所以这一切都取决于您在PHP.ini中使用的限制< / p>

因此,如果你有限制的max_input_vars = 20并且你能够在单个帖子请求中发送20个图像,那么向服务器发送50个图像将需要3个请求(每个请求最多20个图像,最后10个图像)

现在,如果您使用简单的普通表单,那么它就无法完成工作,因为点击“提交”按钮,您只能提交一次表单。为此,您必须使用javascript(或jQuery)提交表单。使用JS,您将能够在多个AJAX请求中提交图像。

这是一个jQuery插件,可以非常有效地完成这项工作 https://github.com/zimt28/laravel-jquery-file-upload

与Laravel一起使用它的帮助很小 https://laracasts.com/discuss/channels/general-discussion/jquery-file-upload-with-laravel

快乐编码!!