如何限制可上传的文件数量?
max
验证似乎适用于图像的大小(以千字节为单位)。如何验证允许上传的最大文件数(例如,只能从一个输入上传10个文件)?
答案 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
}
希望它对你有用。