记一个aws php sdk上传s3问题 payload content length is required and can not be calculated

29 篇文章 1 订阅

1.简介

aws php sdk上传文件到 s3,直接使用 http url 上传,报错

        return $client->putObject([
            'Bucket' => env('AWS_S3_BUCKET'),
            'Key'    => $key,
            'Body'   => fopen($url,'r'),
        ]);

2.解决

最后发现直接使用 url 是不行的,必须guzzle手动获取文件

use GuzzleHttp\Client;

    public static function uploadS3($key, $url){
        $client = new S3Client([
            'region' => 'us-east-2',
            'version' => 'latest',
        ]);

        $http = new Client();
        $res = $http->request('GET', $url);
        
        return $client->putObject([
            'Bucket' => env('AWS_S3_BUCKET'),
            'Key'    => $key,
            'Body'   => $res->getBody(),
            'ContentLength' => $res->getHeader('content-length')[0]
        ]);
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值