LoginSignup
24
23

More than 3 years have passed since last update.

Laravel5.8で簡単画像アップロード機能の実装

Posted at

Laravelを使い初めて、画像アップロード公開がものすごく簡単に実装できて感動したので、投稿します。

1、画像を保存。

(1) 下準備

/config/filesystem.phpの設定を変更。

'default' => env('FILESYSTEM_DRIVER', 'local'),

localのままだと不都合があるため(これから説明)、.envファイルに下記を追記しpublicに設定変更してあげる。

/.env

FILESYSTEM_DRIVER=public

(2) 画像をアップロード

$image = $request->image->store('posts');

この1行で画像自体のアップロードは完了。
後は必要に応じて返り値の画像パスをDBに保存するだけ。

formから送られてきた画像データに対し、storeメソッドを呼ぶと、storage/app/public配下にデータが保存される。例のようにstoreメソッドでディレクトリを指定することもできる。今回の場合は、storage/app/public/posts配下に保存される。

※localのままだと、storage/app直下に保存されるので、これから説明するシンボリックリンクがはれない。

2、画像を表示

(1) viewで表示できるように、laravelの公開用publicフォルダにシンボリックリンクをはる。

php artisan storage:link;

上記コマンドをターミナルで実行すると、
public配下にstorageリンクが作成される。

/public/storage/画像パス

(2) viewで表示

<img src="{ asset('storage/画像のパス') }}">

で保存した画像をviewで表示できる。

※asset()を使うとフルパスになる。

3、アップロードした画像の削除

DBから画像のパスを削除した際に、Storageフォルダにアップロードした画像を同時に削除する方法。

Storageファサードのdeleteメソッドで保存していた画像を削除できる。

use Illuminate\Support\Facades\Storage;
Storage::delete('画像パス');

データ削除した際に、上記メソッドを行えば、画像データも同時に削除できる。

以上、で簡単に画像のCRUDが実装できます。

参考:(公式ドキュメント)
https://readouble.com/laravel/5.8/ja/filesystem.html

24
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
23