php实现aws s3预上传

1. composer 安装aws工具类

composer require aws/aws-sdk-php

2.获取预上传链接

    use Aws\S3\S3Client;
    
    /**
     * aws s3 获取s3预上传文件presigned url
     * @param  [type] $key       [aws的目录]
     * @return [type]            [string]
     */
    function getPresignedUrl($key)
    {
        $region = '';
        $version = '';
        $bucket = '';
        $awskey = '';
        $secret = '';

        $s3Client = S3Client::factory ( array (
            'region' => $region,
            'version' => $version,
            'credentials' => array(
                'key' => $awskey,
                'secret' => $secret,
            ),
        ));

        $cmd = $s3Client->getCommand('PutObject', [
            'Bucket' => $bucket,
            'Key' => $key,
//            'ACL' => 'public-read'
        ]);

        $request = $s3Client->createPresignedRequest($cmd, '+20 minutes');

        // Get the actual presigned-url
        $presignedUrl = (string)$request->getUri();


        return $presignedUrl;
    }

3.测试 预上传链接

echo $presigned_url = getPresignedUrl('/test/test.jpg');
//正确返回如下
//https://bucket.s3.ap-southeast-1.amazonaws.com/test/test.jpg?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAYLOOZPU22XBZQSL2%2F20210420%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20210420T075102Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1200&X-Amz-Signature=bdf605421ddb77d62399603f1583335a7a80e5fb5972899cb15658277884456f

4.使用预上传链接上传,这里用postman测试,注意一定要用put方法直接上传,不用form

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值