登録日:
2025-01-31
最終更新日:
2025-03-19
Laravel の Storage 操作方法
Laravel Storage は、Laravel フレームワークが提供するファイルの保存・管理機能を扱うためのシステムです。Storage ファサードを通じて簡単にファイルの保存、取得、削除、一覧取得などの操作ができます。
主な特徴
ローカルディスクやクラウドストレージとの統一的なインターフェース
- ローカル (storage/app)
- パブリック (storage/app/public)
- クラウド (Amazon S3, Google Cloud Storage, Dropbox など)
ディスク設定の柔軟性
- 設定ファイル config/filesystems.php で複数のディスクを定義可能
- デフォルトのディスクを FILESYSTEM_DISK 環境変数で変更可能
ストレージのシンボリックリンク
- storage/app/public を public/storage にリンクし、Web からアクセス可能にする
php artisan storage:link
基本的な使い方
Storage ファサードを使って、ファイルのアップロード、削除、取得が可能。 Storage を利用するには、以下を読み込む必要がある。
use Illuminate\Support\Facades\Storage;
ファイル操作
ファイルの保存
Storage::disk('local')->put('example.txt', 'Example text');
特定の場所に保存
Storage::disk('local')->putFile('example.txt', 'Example text');
ファイルの取得
$content = Storage::disk('local')->get('example.txt');
ファイルの一覧取得
すべてのファイル
$files = Storage::disk('local')->files();
すべてのディレクトリ
$directories = Storage::disk('local')->directories();
ファイル削除
Storage::disk('local')->delete('example.txt');
ファイルを複数削除する場合
Storage::disk('local')->delete(['example.txt','example.txt']);
ディレクトリ操作
特定のディレクトリ(全ファイルを取得)
Storage::disk('local')->files('dirPath');
特定のディレクトリ(全ファイルを取得(サブディレクトリを含む))
Storage::disk('local')->allFiles('dirPath');
特定パスの全ディレクトリ取得
Storage::disk('local')->directories('dirPath');
特定パスの全ディレクトリ(全ディレクトリを取得(サブディレクトリを含む))
Storage::disk('local')->allDirectories('dirPath');
ディレクトリ作成
Storage::disk('local')->makeDirectory('dirPath');
ディレクトリ削除
Storage::disk('local')->deleteDirectory('dirPath');
クラウドストレージの利用
Amazon S3 などのクラウドストレージを利用する場合、.env にクレデンシャルを設定し、config/filesystems.php でディスクを指定します。
'disks' => [
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
使用例
Storage::disk('s3')->put('uploads/file.txt', 'Cloud storage');