対象読者
- Laravel の使用を考えている方
- Storageクラスについて基礎を抑えたい方
- Storageクラスの使用方法をざっくりでいいから知りたい方
環境
- Laravel 6系
目次
- 対象読者
- 環境
- 目次
- Storageクラスとは
- storageクラスの設定ファイル
- ディスクとは
- Storageクラスの使用
- ファイルの読み込み
- ファイルの保存
- ファイルへ書き込み
- ファイルのコピー・移動・削除
- ファイルの情報
- ファイルの存在
- ディレクトリの管理
- 参考文献
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
を読み込み、変数に格納しています。
$file = Storage::get('sample.txt');
ファイルの保存
put
$text
を sample.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.txt
を sample/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');