おすすめ書籍はじめにこんにちは。webアプリケーションを作る際にファイルアップロードはごく当然の機能で、Laravelでももちろん標準でサポートされています。今回は要件次第では実装がほとんど不要になるライブラリlaravel-imageupを紹介します。公式のREADMEに従って、composerでサクッとインストールします。ImageがPHPのGD拡張もしくはImagick拡張に依存するので、あらかじめ入れておきましょう。linked.あとはライブラリを/config/app.phpに登録して導入完了です。Providers...*/Illuminate\View\ViewServiceProvider::class,]実装チュートリアルでお馴染みのmake:authでログイン機能を生成し、登録画面に画像アップロードのフォームを追加します。マイグレーション処理は省略しますがUserテーブルにファイル名を保存するためのavatarカラムを追加済みとします。successfully.<p>次に<code>register.blade.php</code>を編集します。form要素に<code>enctype="multipart/form-data"</code>を追加するのをお忘れなく。</div>1234567891011121314<p>次に<code>register.blade.php</code>を編集します。form要素に<code>enctype="multipart/form-data"</code>を追加するのをお忘れなく。}}</strong></span>@endif</div></div>モデルクラス/app/User.phpにプロパティを追記します。['avatar'];}Userテーブルにレコードを作成する処理ところで、avatarカラムに値を入れるためのコードを追記します。追記]);}実際にはRequestクラスでのバリデーションなどありますが、これで最低限の実装完了です。フォームを送信してみましょう。アップロードした画像が/app/storage/app/public/uploadsに保存されていれば成功です。個人的にハマったこと配列はダメ私がこのライブラリを使った時、実装の要件として「複数のファイルを一度にアップロードできる」というのがありました。当初は特に深く考えず以下のようなhtmlを書いてましたが、ここで軽くハマりました。name="avatar[]">この状態のままだと、前述の$data['avatar']に配列で格納され、ライブラリの自動アップロードが効かなくなるばかりかエラーを吐いてしまいます。そもそもライブラリ側がIlluminate\Http\UploadedFileを受け取ることが前提なので、この場合は以下2つの解決策があります。inputのname要素をname="avatar_1"name="avatar_2"というようにユニークな値で記述する自動アップロードを無効化して(デフォルトでは有効)、foreachなどでひとつずつ手動でアップロードする私は後者で解決しました。falseとしてもよいのですが、アプリケーション全体に影響してしまうので、モデルクラスで以下のようにプロパティを設定します。'avatar');で、配列に格納されているUploadedFileオブジェクトをひとつずつ渡せばOKです。PHPStanで引っかかるuploadImageメソッドが、PHPコードを静的解析するツールであるPHPStanでエラーを吐きます。ライブラリのPHPDocが以下のようになっているため「第二引数$fieldがNULLのみ受け付ける」という意味になってしまっています。null){......これはuploadImageをオーバーライドするか、モデルクラスに適当なメソッドを作って、その中でuploadImageを呼ぶようにしましょう。さいごに少々面倒なファイルアップロード処理を少ないコードで実装できるlaravel-imageupを紹介しました。中身とその挙動を把握した上で使えばかなり便利だと思います。Laravel本体のバージョンに追随している点も地味に長所だと思います。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。