限制可上载的文件数

时间:2015-03-16 21:47:53

标签: laravel laravel-4

如何限制可上传的文件数量?

max验证似乎适用于图像的大小(以千字节为单位)。如何验证允许上传的最大文件数(例如,只能从一个输入上传10个文件)?

2 个答案:

答案 0 :(得分:2)

我在laravel 7.x中的工作方式

使用以下命令创建新的表单请求类

php artisan make:request UploadImageRequest

use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\BaseFormRequest;

class UploadImageRequest extends BaseFormRequest
{
public function authorize()
{
  return true;
}

public function rules()
{
  return [
    'coverImage.*' => 'image|mimes:png,jpg,jpeg,gif,svg|max:2048',
    'coverImage' => 'max:5',
  ];
} 

public function messages() {
  return [
    'coverImage.*.max' => 'Image size should be less than 2mb',
    'coverImage.*.mimes' => 'Only jpeg, png, bmp,tiff files are allowed.',
    'coverImage.max' => 'Only 5 images are allowed'
  ];
}

在View.blade.php

<input type="file" id="coverImage" name="coverImage[]"
                        class="form-control-file @error('coverImage') is-invalid @enderror" multiple>                        
@error('coverImage')
 <span class="text-danger">{{ $message }}</span>
@enderror

在控制器中

public function store(UploadImageRequest $request)
{
  //code
}

答案 1 :(得分:1)

在laravel中,没有内置的验证规则。但您可以创建custom-validation rule来处理此问题。

这是一个简单的自定义验证规则。

customValidator.php目录中创建app/

Validator::extend('upload_count', function($attribute, $value, $parameters)
{   
    $files = Input::file($parameters[0]);

    return (count($files) <= $parameters[1]) ? true : false;
});

请勿忘记将其添加到app/start/global.php

require app_path().'/customValidator.php';

在验证设置中

$messages = array(
    'upload_count' => 'The :attribute field cannot be more than 3.',
);

$validator = Validator::make(
    Input::all(),
    array('file' => array('upload_count:file,3')), // first param is field name and second is max count
    $messages
);

if ($validator->fails()) {
     // show validation error
}

希望它对你有用。