BETA

【Laravel】FormRequestでファイル名を返したい

投稿日:2018-11-04
最終更新:2018-11-04

概要と環境

画像をアップロードするフォームで、アップロード上限を超えた時などにファイル名とメッセージを合わせて返したかった。

環境はPHP7.1, Laravel5.6 フロントにはVue.jsを利用している。データはnew FormDataで1枚ずつ送られる。

コード

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Input;

class ScreenshotRequest extends FormRequest
{
    protected $maxSize = 1024 * 5;
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'image' => "image|mimes:jpeg,jpg,png|max:{$this->maxSize}"
        ];
    }

    /**
     * 定義済みバリデーションルールのエラーメッセージ取得
     *
     * @return array
     */
    public function messages()
    {
        $fileName = Input::file('image')->getClientOriginalName();
        return [
            'image.image' => "画像ファイルのみアップロード可能です。({$fileName})",
            'image.mimes' => "拡張子はjpeg,jpg,pngに対応しています。({$fileName})",
            'image.max'   => "画像ファイルの一つあたりの上限は{$this->maxSize}キロバイトです。({$fileName})",
        ];
    }
}

実は$thisの中にファイル名はあるんだけど、どうも参照できない値らしい。 というわけでInputを使ったという経緯。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@rtrx8の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!