博客
关于我
laravel 使用AWS S3
阅读量:794 次
发布时间:2023-01-30

本文共 2783 字,大约阅读时间需要 9 分钟。

AWS-S3ترParmis Laravel 应用 中 icioordination خوش scrapy

Tie这个文档主要介绍了使用 AWS-S3 服务并通过 Laravel 应用进行文件上传和删除操作的配置和实现方法。以下内容将帮助您顺利完成相关配置并实现文件的 CRUD 操作。


1. 安装 AWS SDK for Laravel

首先,我们需要通过 Composer 安装 AWS SDK:

composer require aws/aws-sdk-php-laravel

2. 注册 ServiceProvider

接下来,我们需要在 Laravel 的配置文件中注册 AWS 服务提供商。请编辑文件:

/app/config/app.php

providers 数组中添加以下内容:

Aws\Laravel\AwsServiceProvider::class,

aliases 数组中也添加:

'AWS' => Aws\Laravel\AwsFacade::class,

3. 配置 AWS 概率

完成上述配置后,我们需要在 Laravel 的 AWS 配置文件中(app/config/aws.php)指定 S3 服务的详细信息。例如:

return [    'version' => 'latest',    'region' => env('AWS_REGION', 'ap-south-1'),    'endpoint' => env('AWS_ENDPOINT', 'https://sharerabc.s3.ap-south-1.amazonaws.com'),    'use_path_style_endpoint' => true,    'credentials' => [        'key' => env('AWS_KEY', 'YOUR_AWS_ACCESS_KEY'),        'secret' => env('AWS_SECRET', 'YOUR_AWS_SECRET_KEY'),    ],    'Ses' => [        'region' => env('AWS_SES_REGION', 'ap-south-1'),    ],];

4. 设置服务器证书

为了能够使用 AWS 服务,请确保在你的服务器上安装了正确的身份验证凭证文件。通常,文件命名为 credentials,位于你的用户主目录下:

vim /home/www/.aws/credentials

内容应如下:

[default]aws_access_key_id = YOUR_AWS_ACCESS_KEYaws_secret_access_key = YOUR_AWS_SECRET_KEY[project1]aws_access_key_id = YOUR_AWS_ACCESS_KEYaws_secret_access_key = YOUR_AWS_SECRET_KEY

5. 实现文件上传

我们可以通过 Laravel 途径实现文件上传到 S3 服务的功能。以下是一个示例控制器方法:

public function add(){    $s3Client = AwsFacade::createClient('s3');        $s3_return = $s3Client->putObject([        'Bucket' => date('Ymd'),        'Key' => time() . '.png',        'Body' => file_get_contents('img/demo.png'),    ]);        if ($s3_return['@metadata']['statusCode'] == 200) {        echo $s3_return['@metadata']['effectiveUri'];    } else {        echo '上传失败';    }}

6. 实现文件删除

为了删除 S3 中的文件,可以使用 deleteObject 方法。以下是一个示例方法:

public function del(){    $s3Client = AwsFacade::createClient('s3');    $bucket = 'demo';        $s3Client->deleteObjects([        'Bucket' => $bucket,        'Delete' => [            'Objects' => [['Key' => '20210208/1612777025.png']],        ],    ]);}

7. 其他操作

创建桶 (Bucket)

你可以使用以下代码创建一个新的桶:

$s3Client = AwsFacade::createClient('s3');$s3Client->createBucket(['Bucket' => $bucket['Name']]);

列出桶

列出所有桶的信息可以通过以下方法实现:

$s3Client->listBuckets()['Buckets'];

删除桶

要删除一个桶,首先需要确保该桶是空的。以下是完整的删除逻辑:

$allBuckets = $s3Client->listBuckets()['Buckets'];$excludedBuckets = ['mytestingbucket', 'yedan-school-common'];foreach ($allBuckets as $bucket) {    if (!in_array($bucket['Name'], $excludedBuckets)) {        $deleteBucketResult = $s3Client->deleteBucket(['Bucket' => $bucket['Name']]);                if ($deleteBucketResult['@metadata']['statusCode'] == 200) {            echo "桶成功删除";        } else {            echo "删除桶失败";        }    }}

8. 参考资料


这些内容涵盖了从配置到实际操作的完整流程,帮助您顺利利用 AWS-S3 服务进行文件管理功能。

转载地址:http://gugyk.baihongyu.com/

你可能感兴趣的文章
leaflet移动端访问地图时文字很小(leaflet篇.33)
查看>>