📜  使用 s3 存储 laravel - PHP (1)

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

使用 S3 存储 Laravel - PHP

在 Laravel 应用程序中,通常需要存储一些文件,例如图片、文档等等。通常情况下,我们会把这些文件存储在本地文件系统中,但是使用云存储的方式也成为了一种越来越流行的选择。

Amazon S3(Simple Storage Service)是 Amazon 提供的一种高度可扩展、高度可靠、低成本的云存储服务,使用它可以方便地存储和检索任意数据。本文将带领大家了解如何在 Laravel 应用程序中使用 S3 存储文件。

环境设置

在使用 S3 存储之前,需要安装 aws/aws-sdk-php 这个 Composer 包,并且需要配置 config/filesystems.php.env 文件。

安装 Composer 包

在命令行中执行以下命令,即可安装 aws/aws-sdk-php 这个 Composer 包。

composer require aws/aws-sdk-php
配置 config/filesystems.php

config/filesystems.php 文件中,我们需要增加一个新的磁盘配置项。在这个配置项中,我们需要指定使用 S3 作为文件系统,并且需要设置好 S3 的相关参数,例如配置 AWS 访问凭证、S3 存储桶名称等等。

'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'),
],
配置 .env 文件

.env 文件中,我们需要设置好 S3 访问凭证和 S3 存储桶名称。

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=
AWS_ENDPOINT=
存储文件

在 Laravel 应用程序中存储文件非常容易,在上面的环境设置完成后,我们可以直接在应用程序中使用 Storage Facade 来操作文件。

写入文件

使用 put 方法可以写入一个文件到 S3 中。例如,我们可以在控制器中这样写入一个字符串到 S3 中。

use Illuminate\Support\Facades\Storage;

class ExampleController extends Controller
{
    public function store()
    {
        Storage::disk('s3')->put('example.txt', 'This is an example file.');
    }
}
获取文件 URL

使用 url 方法可以获取一个文件在 S3 中的公开 URL。

$url = Storage::disk('s3')->url('example.txt');
文件是否存在

使用 exists 方法可以判断一个文件是否存在于 S3 中。

$exists = Storage::disk('s3')->exists('example.txt');
删除文件

使用 delete 方法可以删除一个文件。

Storage::disk('s3')->delete('example.txt');
结论

使用 S3 存储 Laravel 应用程序中的文件非常容易。只需要安装 aws/aws-sdk-php 这个 Composer 包,并且配置好环境变量和文件系统配置文件,就可以在应用程序中直接使用 Storage Facade 来操作文件。

如果你希望 Laravel 应用程序具有高可靠性、低成本以及高度可扩展的文件系统,则 Amazon S3 应该是一个非常不错的选择。