LaravelのStorageでファイルを保存する方法【現役エンジニアが解説】

PROGRAM

今回は、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のファイル名で保存しています。