添付ファイルのアップロードで $request->all() でエラー

投稿者: | 2018年11月17日

添付ファイルのアップロードという初歩的な作業で躓きましたのでメモです。

普通のフォームにtype=”file”の入力項目を追加し、Laravel側で受け取るだけの作業だったのですが、それがどうしても上手くいかず、ログを確認したところ下記のように記述されていました。

Serialization of 'Illuminate\Http\UploadedFile' is not allowed

自分はLaravelでリクエストの内容を受け取るときは Request型のオブジェクトからall()を使って下記のように取得していました。

$inputs = $request->all();

どうもこの処理のところでエラーが発生しているようで、ファイル型の入力が存在すると、配列型に変換できないのが原因のようです。

というわけでall()は使えないので、入力項目を一つずつ指定するしかないのかと思っていたらさすがLaravel、不要な項目を排除して取得するメソッドが用意されていました。
下記のように指定します。

$inputs = $request->except(['file1', 'file2']);

これでエラーは発生しなくなり、ファイルを受け取る処理ができるようになりました。