Проверки расширений шрифтов Laravel

#laravel #validation #fonts #mime-types

#laravel #проверка #шрифты #mime-типы

Вопрос:

Я использую проверку запроса формы для проверки расширения шрифта. Я загружаю типы шрифтов, и мои правила таковы:

     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 amp; 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 .

Комментарии:

1. Я пытаюсь изменить mimetypes на mime для woff amp; woff2, но это не работает и выдает ту же ошибку. Ошибка возникает в основном для двух расширений (woff amp; woff2) 'fontwoff' => 'file|mimes:woff', 'fontwoff2' => 'file|mimes:woff2',

2. проверка mime в laravel зависит не только от расширения. он проверяет файл и пытается угадать, какой тип mime: laravel.com/docs/8.x/validation#rule-mimes