unisharp / s3-presigned
一个用于Laravel和PHP中预签名上传的AWS S3包。
v0.2
2017-10-30 04:40 UTC
Requires
- php: ^5.6.4 || ^7.0
- aws/aws-sdk-php: ^3.31
- guzzlehttp/guzzle: ^6.2
- illuminate/support: >=5.0.0
- mockery/mockery: 0.9.*
Requires (Dev)
- phpunit/phpunit: ^6.1
This package is auto-updated.
Last update: 2024-09-13 22:37:26 UTC
README
方法
传统上,从用户上传文件到私有S3存储桶需要两个网络连接。一个是客户端到你的服务器,另一个是从你的服务器到S3存储桶。使用预签名上传可以解决这个问题。你的服务器为客户端提供一个预签名上传URL,以便客户端预先上传,客户端可以在授权的时间段内直接将文件上传到S3存储桶。此包为PHP和Laravel包装了S3预签名API。
安装
composer require unisharp/s3-presigned
Laravel 5
设置
在 app/config/app.php
中添加ServiceProvider和Facade。
Unisharp\S3\Presigned\S3PresignedServiceProvider::class,
'S3Presigned' => Unisharp\S3\Presigned\Facades\S3Presigned::class,
支持Laravel 5.5的包发现。
配置
将设置添加到 .env 文件中。
// required
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_S3_BUCKET=
// optional
AWS_REGION=ap-northeast-1
AWS_VERSION=latest
AWS_S3_PREFIX=
APIs
/* * @return string */ public function getSimpleUploadUrl($key, $minutes = 10, array $options = [], $guzzle = false)
- $key: 你的s3文件密钥,将自动添加前缀。
- $minutes: 预签名URL的过期时间。
- $options: 查看 AWS文档 获取更多信息。
- $guzzle: 如果你想获取一个guzzle实例而不是字符串,请设置为true。
/* * @return array('endpoint', 'inputs') */ public function getUploadForm($minutes = 10, array $policies = [], array $defaults = [])
- $minutes: 预签名URL的过期时间。
- $policies: 查看 AWS文档 获取更多信息。
- $defaults: 你想要添加到表单输入中的默认键值。
更多详细信息,请参阅: AWS文档
/* * @return array */ public function listObjects($directory = '', $recursive = false)
/* * @return boolean */ public function deleteObject($key)
/* * @return string */ public function getBaseUri()
/* * @return this */ public function setPrefix($prefix)
/* * @return string */ public function getPrefix()
/* * @return this */ public function setBucket($bucket)
/* * @return string */ public function getBucket()
/* * @return Aws\S3\S3Client */ public function getClient()