unisharp/s3-presigned

一个用于Laravel和PHP中预签名上传的AWS S3包。

v0.2 2017-10-30 04:40 UTC

This package is auto-updated.

Last update: 2024-09-13 22:37:26 UTC


README

php-badge packagist-badge

方法

传统上,从用户上传文件到私有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()