本文共 2783 字,大约阅读时间需要 9 分钟。
Tie这个文档主要介绍了使用 AWS-S3 服务并通过 Laravel 应用进行文件上传和删除操作的配置和实现方法。以下内容将帮助您顺利完成相关配置并实现文件的 CRUD 操作。
首先,我们需要通过 Composer 安装 AWS SDK:
composer require aws/aws-sdk-php-laravel
接下来,我们需要在 Laravel 的配置文件中注册 AWS 服务提供商。请编辑文件:
/app/config/app.php
在 providers
数组中添加以下内容:
Aws\Laravel\AwsServiceProvider::class,
在 aliases
数组中也添加:
'AWS' => Aws\Laravel\AwsFacade::class,
完成上述配置后,我们需要在 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'), ],];
为了能够使用 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
我们可以通过 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 '上传失败'; }}
为了删除 S3 中的文件,可以使用 deleteObject
方法。以下是一个示例方法:
public function del(){ $s3Client = AwsFacade::createClient('s3'); $bucket = 'demo'; $s3Client->deleteObjects([ 'Bucket' => $bucket, 'Delete' => [ 'Objects' => [['Key' => '20210208/1612777025.png']], ], ]);}
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 "删除桶失败"; } }}
这些内容涵盖了从配置到实际操作的完整流程,帮助您顺利利用 AWS-S3 服务进行文件管理功能。
转载地址:http://gugyk.baihongyu.com/