ファイルのアップロードと言っても、なんのフォーマットのファイルでもアップをしてよいというわけではありません。たいていは画像ファイルのアップロードになりますが、それでもGIFはアップしてもらいたくない、JPEGだけが欲しいとか。
そのときは、バリデーションを使用してアップしたファイルのMIMEの情報をもとにプログラムで制限します。
まず、jpegだけのファイルをOKとしましょう。
... class UserController extends Controller { ... public function postUpload(Request $request) { $validator = Validator::make($request->all(), [ 'file' => 'required|max:10240|mimes:jpeg' ]); if ($validator->fails()) { return back()->withInput()->withErrors($validator); } return redirect('user/upload'); } }
ここ、jpg
でなくjpeg
であることに注意してください。ファイルの拡張子はたいてい、.jpg
ですが、ユーザーのマシンのOSが送信するMIMIEは、image/jpeg
です。
複数の画像フォーマットを許すなら、
... class UserController extends Controller { ... public function postUpload(Request $request) { $validator = Validator::make($request->all(), [ 'file' => 'required|max:10240|mimes:jpeg,gif,png' ]); if ($validator->fails()) { return back()->withInput()->withErrors($validator); } return redirect('user/upload'); } }
と指定します。
メルマガ購読の申し込みはこちらから。