我很抱歉,如果有人问我无法在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);
}
答案 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
快乐编码!!