LoginSignup
0
0

laravel8 Storageファサードのドライバのふるまい

Last updated at Posted at 2021-12-01

目的

  • Storage::get()の振る舞いについて若干詰まったので簡単にまとめておく

Storageファサードの振る舞い

  • そもそもStorageファサードはdisc()メソッドや.envで指定しない限りconfig/filesystems.php'default'で指定されたドライバを参照しにいく。
    • ここで言うドライバとはローカルとかS3とかの記憶する「場所」の話である。

    • 完全にデフォルトの場合下記のように記載されてlaravelプロダクトのローカルを参照するようになっている。

      config/filesystems.php
      /*
      |--------------------------------------------------------------------------
      | Default Filesystem Disk
      |--------------------------------------------------------------------------
      |
      | Here you may specify the default filesystem disk that should be used
      | by the framework. The "local" disk, as well as a variety of cloud
      | based disks are available to your application. Just store away!
      |
      */
      
      'default' => env('FILESYSTEM_DRIVER', 'local'),
      
    • 下記の様に.envに記載されている 場合、ドライバはs3が指定されている。

      .env
      FILESYSTEM_DRIVER=s3
      
    • この場合Storageファサードを使った処理はdisk()メソッドで指定しない限りs3を参照して実行される。

  • なので「殆どのファイルはs3に上げたいけど、ローカルでzipファイルに固めてダウンロードしたい」などのケースでzipをダウンロードする場合下記のように記載する。
    • Storage::download()を用いる場合(あくまでダウンロード処理の例のみ記載、コチラだけを記載してもzipで固めてダウンロードしてくれない)

      Storage::disk('local')->download('ファイルパス', 'ファイル名', 'ヘッダー');
      
    • response()を用いる場合

      response()->download('ファイルパス', 'ファイル名', 'ヘッダー');
      // ダウンロード後のファイルを削除してほしい場合、deleteFileAfterSend(true)を呼ぶ
      response()->download('ファイルパス', 'ファイル名', 'ヘッダー')->deleteFileAfterSend(true);
      

参考文献

0
0
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
0
0