LaravelのStorageでファイルを保存する方法【現役エンジニアが解説】
今回は、LaravelのStorageでファイルを保存する方法について、簡単に解説していきます。
.envの修正
LaravelではStorageファサードでファイルを保存することができます。
そのためには、まず、.envファイルを開き、FILESYSTEM_DISKを選びましょう。
FILESYSTEM_DISK=local
FILESYSTEM_DISKは使用するディスクの設定で、localやpublic、s3の中から選びます。
configの修正
続いて、config/filesystems.phpを開きます。
ここでは、localやpublic、s3の保存先の情報が記載されています。
return [ 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), 'throw' => false, ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, ], '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'), 'endpoint' => env('AWS_ENDPOINT'), 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 'throw' => false, ], ], ]
上記のような記述となっているため、使用するディスクの保存先の設定を適宜書き換えましょう。
Storageでファイル保存
準備が整えば、StorageファサードのputFileAsメソッドでファイル名を指定して保存できます。
putFileAsメソッドの第一引数にディレクトリパス、第二引数にファイルインスタンス、第三引数にファイル名を指定します。
Storage::putFileAs('',$request->file('hogefile'), 'hoge.txt');
上記の例では、アップロードされたhogefileというname属性のファイルをappディレクトリにhoge.txtのファイル名で保存しています。