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]
]);
}