📜  laravel 存储 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:14.506000             🧑  作者: Mango

Laravel 存储

Laravel 存储是 Laravel 的一个功能强大的组件,它提供了一个统一的接口来处理文件系统、云存储和本地存储。

安装

Laravel 存储是 Laravel 框架的一部分,因此它不需要额外安装。只需在应用程序中使用即可。

配置

Laravel 存储的配置文件位于 config/filesystems.php。这个文件中定义了应用程序可以使用的不同的 "驱动程序"。驱动程序为文件存储库提供了统一的接口。

return [
    'default' => env('FILESYSTEM_DRIVER', 'local'),

    'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL') . '/storage',
            'visibility' => 'public',
        ],

        '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'),
        ],
    ],
];

在这个配置文件中,可以添加任意多个驱动程序。驱动程序可以是本地文件系统、Amazon S3、Rackspace 等云存储或其他文件系统。可以通过在 filesystems.php 文件中设置特定选项来配置每个驱动程序的行为。

Laravel 还允许自定义文件系统驱动程序,使得您可以快速、轻松地扩展存储系统。

使用

一旦配置了文件系统驱动程序,可以使用 Storage facade 来访问文件存储库中的文件。

读取文件
use Illuminate\Support\Facades\Storage;

// 读取默认磁盘上的文件
$contents = Storage::get('file.jpg');

// 读取本地磁盘上的文件
$contents = Storage::disk('local')->get('file.jpg');
写入文件
use Illuminate\Support\Facades\Storage;

// 写入默认磁盘上的文件
Storage::put('file.jpg', $contents);

// 写入本地磁盘上的文件
Storage::disk('local')->put('file.jpg', $contents);
删除文件
use Illuminate\Support\Facades\Storage;

// 删除默认磁盘上的文件
Storage::delete('file.jpg');

// 删除本地磁盘上的文件
Storage::disk('local')->delete('file.jpg');
获取文件 URL
use Illuminate\Support\Facades\Storage;

// 获取默认磁盘上的文件 URL
$url = Storage::url('file.jpg');

// 获取 public 磁盘上的文件 URL
$url = Storage::disk('public')->url('file.jpg');
获取文件元数据
use Illuminate\Support\Facades\Storage;

// 获取默认磁盘上的文件元数据
$meta = Storage::getMetaData('file.jpg');

// 获取本地磁盘上的文件元数据
$meta = Storage::disk('local')->getMetadata('file.jpg');
总结

Laravel 存储是一个非常有用的组件,可以帮助开发者处理文件系统、云存储和本地存储的所有类型,提供了一个灵活的驱动程序接口,支持自定义文件系统驱动程序,使得我们可以在 Laravel 中更好地管理文件系统。