53
51

More than 1 year has passed since last update.

【PHP / Laravel】Storage の基本操作まとめ

Last updated at Posted at 2021-10-03

対象読者

  • Laravel の使用を考えている方
  • Storageクラスについて基礎を抑えたい方
  • Storageクラスの使用方法をざっくりでいいから知りたい方

環境

  • Laravel 6系

目次

Storageクラスとは

シンプルにそして簡単にファイルを操作することができる機能で
Laravel には Storage というものが備わっています。
具体的にはファイルを読み込んだり保存したりすることができます。

Storageクラスの設定ファイル

Storageクラスで使用されるディスクの内容は configs/filesystem.php に記述されています。
ディスクの追加をしたり設定を確認したりできます。
また、デフォルトのディスクが local になっていることが確認できます。

ディスクとは

保存場所のことです。

以下のような保存場所があります。

ディスク名 役割
local 非公開。
デフォルトで選択されているディスク。
/Storage/app 内にアクセス。
public 公開。
デフォルトでは /Storage/app/public 内にアクセス。
s3 AWSのストレージ。
ただしドライバ用パッケージが必要。

disk

ディスクを選択することができるメソッドです。

# ディスクの指定方法(ディレク名のところに 'local' や 'public' などを記述する)
Storage::disk(ディスク名);

以下の例だと /storage/app/public/sample.txt にアクセスします。

Storage::disk('public')->get('sample.txt');

シンボリックリンクを作成することで外部からもアクセスが可能になります。

シンボリックリンクの作成

php artisan storage:link

Storageクラスの使用

以下のコードで Storage の機能を使用することができるようになります。

use Illuminate\Support\Facades\Storage;

ファイルの読み込み

get

デフォルトの設定だと /storage/app 内のファイルを読み込みます。
以下の例だと /storage/app/sample.txt を読み込み、変数に格納しています。

/storage/app/sample.txt
$file = Storage::get('sample.txt');

ファイルの保存

put

$textsample.txt に保存する

Storage::put('sample.txt', $text);

putFile

指定したディレクトリにファイルを保存することができます。
ファイル名は自動的につけられます。

第1引数にディレクトリのパス、第2引数にファイルインスタンス。

Storage::putFile('path', $file);

putFileAs

指定したディレクトリにファイルを指定した名前で保存することができます。

第1引数にディレクトリのパス、第2引数にファイルインスタンス、第3引数にファイル名。

Storage::putFileAs('path', $file, 'sample.txt');

ファイルへ書き込み

prepend

ファイルの先頭に $text 追加します。

Storage::prepend('sample.txt', $text);

append

ファイルの末尾に $text 追加します。

Storage::append('sample.txt', $text);

ファイルのコピー・移動・削除

copy

sample.txt の情報を copy.txt にコピーします。

Storage::copy('sample.txt', 'copy.txt');

move

sample.txtsample/sample.txt に移動します。

Storage::move('sample.txt', 'sample/sample.txt');

delete

sample.txt を削除します。

Storage::delete('sample.txt');

ファイルの情報

url

ファイルの相対パスを取得します。

Storage::url('sample.txt');

ファイルの存在

exists

sample.txt があるかチェックします。

Storage::exists('sample.txt');

ディレクトリの管理

files

指定したディレクトリ内にあるファイルのパスを配列で返します。

Storage::files('path');

allFiles

サブディレクトリを含め全ファイルのパスを配列で返します。

Storage::allFiles('path');

directories

指定したディレクトリ内の全ディレクトリのパスを配列で返します。

Storage::directories('path');

参考文献

53
51
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
53
51