端くれプログラマの備忘録 Laravel [Laravel] 画像アップロード

[Laravel] 画像アップロード

以下は超シンプルな実装。storage/app以下のimagesディレクトリ(存在しなければ作成される)に、生成されたユニークIDをファイル名として保存される。

$path = $request->file('image')->store('images');
// path: "images/Xloh4CDS00CwuCikL6yJgJeSQhlwOzb17Svx40wc.jpeg"

ストレージディレクトリの公開

以下のコマンドでpublic/storageからstorage/app/publicへシンボリックリンクが生成される。

$ php artisan storage:link

そうしておいて、storage/app/public以下へファイルをアップロードすると、public/storage経由でフロントエンドからアクセスできるようになる。

バリデーションメモ

画像、3MB未満、最小120×120、最大400×400の例

$this->validate($request, [
    'file' => 'image|max:3000|dimensions:min_width=120,min_height=120,max_width=400,max_height=400'
]);

参考サイト

File Storage – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.5/filesystem#file-uploads

ファイルのアップロード – ララジャパン
http://www.larajapan.com/tag/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89/