Laravel 字体扩展验证

Posted

技术标签:

【中文标题】Laravel 字体扩展验证【英文标题】:Laravel font extensions validations 【发布时间】:2019-09-09 00:47:56 【问题描述】:

我正在使用表单请求验证来验证字体扩展。我正在上传字体类型,我的规则是这样的:

    public function rules()
    
        if($this->method() == 'POST') 
            return [

                'fonteot' => 'file|mimetypes:eot,application/vnd.ms-fontobject',
                'fontttf' => 'file|mimetypes:ttf,application/x-font-ttf,font/ttf,application/x-font-truetype',
                'fontwoff' => 'file|mimetypes:woff,application/font-woff,application/x-font-woff,font/woff',
                'fontwoff2' => 'file|mimetypes:woff2,font/woff2',
            ];
        
        return [
            'fonteot' => 'file|mimetypes:eot,application/vnd.ms-fontobject',
            'fontttf' => 'file|mimetypes:ttf,application/x-font-ttf,font/ttf,application/x-font-truetype',
            'fontwoff' => 'file|mimetypes:woff,application/font-woff,application/x-font-woff,font/woff',
            'fontwoff2' => 'file|mimetypes:woff2,font/woff2',
        ];
    

根据文档,我使用 mime 类型作为文件扩展名,但我的验证器无法传递 woff 和 woff2 并重定向到我的表单并返回错误消息:

fontwoff 必须是以下类型的文件:woff、application/font-woff、application/x-font-woff、font/woff

fontwoff2 必须是文件类型:woff2, font/woff2

这是什么原因?

【问题讨论】:

【参考方案1】:

对于 mime 类型验证,您有两种方法可以在 Laravel 中进行。一个使用mimetypes,另一个使用mimes。我认为在这里您需要mimes,因为这是检查文件扩展名的验证。

所以,

'fontwoff' => 'file|mimes:woff',

应该适用于扩展名为 .woff 的文件。

【讨论】:

我尝试将 mimetypes 更改为 mime for woff & woff2 但它不起作用并且有相同的错误。错误主要发生在两个扩展(woff & woff2)'fontwoff' => 'file|mimes:woff', 'fontwoff2' => 'file|mimes:woff2',

以上是关于Laravel 字体扩展验证的主要内容,如果未能解决你的问题,请参考以下文章

多次扩展 Laravel 验证器

Laravel 4.x 关于扩展身份验证的文档是不是错误?

Laravel 扩展规则消息

Laravel 5.5 文件扩展验证不起作用

Laravel:模型内的验证。多重验证规则

使用 Captcha 扩展包 为 Laravel 5 应用生成验证码