ファイルアップロート時にメガバイト(MB)単位でMaxサイズバリデーションを行う。
# バリデーションルールの追加 php artisan make:rule ImageFileMaxSize
app\Rules\ImageFileMaxSize.php
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class ImageFileMaxSize implements Rule { const MAX_MB = 10; // メガバイト /** * Create a new rule instance. * * @return void */ public function __construct() { // } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { if (is_null($value)) { return true; } // ファイルサイズをMBに変換 $mega_bytes = $value->getSize() / 1024 / 1024; return $mega_bytes <= $this::MAX_MB; } /** * Get the validation error message. * * @return string */ public function message() { return ':attribute のサイズは' . $this::MAX_MB . 'MB以下にしてください。'; } }
追加したバリデーションルールの使い方
use App\Rules\ImageFileMaxSize; public function rules() { return [ 'file' => [ 'file', 'image', 'mimes:jpeg,jpg,png,gif', new ImageFileMaxSize, ], ]; }
コメント