概要
フォームからアップロードしたファイルの形式を、バリデーションでチェックするように実装したい時ってありますよね?
Laravelでは、デフォルトで用意されているバリデーションルールに、ファイルの形式をチェックするmimes
というルールがあります。
https://readouble.com/laravel/5.1/ja/validation.html#rule-mimes
mimes:foo,bar,...
フィールドで指定されたファイルが拡張子のリストの中のMIMEタイプのどれかと一致することをバリデートします。
公式ドキュメントには、基本的な使用方法として、下記のような画像の形式を指定する方法が記述されています。
'photo' => 'mimes:jpeg,bmp,png'
このmimesを用いて、動画ファイルの形式をチェックすることが可能か試してみました。
mimesルールで指定できる動画ファイルの形式
基本的には下記サイトにあるような、MIMEタイプを指定することで、チェックすることができます。
一部判明したものを表に載せます。
( 拡張子ではないので注意)
http://www.tagindex.com/html5/basic/mimetype.html
動画の拡張子 | 指定できるMIMEタイプ |
---|---|
.mp4 | mp4 |
.mov | qt |
.wmv | x-ms-wmv |
.mpeg .mpg | mpeg |
.avi | x-msvideo |
QuickTime Playerでおなじみの.mov
ファイルは、quicktime
でもなく、mov
でもなく、qt
です。
これに気づくのにとても時間が掛かってしまいました…。
同じように調べている人がいましたら、この記事が参考になれば幸いです。
サンプル
protected function getVideoRule($key)
{
return [$key => 'required|mimes:mp4,qt,x-ms-wmv,mpeg,x-msvideo'];
}