#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