【问题标题】:Limit number of files that can be uploaded限制可以上传的文件数
【发布时间】:2015-05-19 04:49:24
【问题描述】:

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

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

【问题讨论】:

  • 不,这不是重复的。我在问如何在 LARAVEL 内创建一个验证来限制可以上传的文件数量,如果超过该限制则显示一条消息。
  • 不要认为 Laravel 有内置的验证规则。许多 js 上传插件可以设置这样的限制,但最终您需要提供自定义后端验证。此外,这可能会有所帮助:developer.mozilla.org/en-US/docs/…

标签: laravel laravel-4


【解决方案1】:

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

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

app/目录中创建customValidator.php

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
}

希望对你有用。

【讨论】:

    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      相关资源
      最近更新 更多