使用Laravel 5.3在S3上传文件

时间:2016-11-29 08:47:06

标签: laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

安装过程

I followed this tutorial to install aws Package in Laravel 5.3

我的代码低于

$s3 = \App::make('aws')->createClient('s3');

$s3->putObject(array(
    'Bucket'     => 'Bucket_Name',
    'Key'        => 'AWS_ACCESS_KEY_ID',
    'SourceFile' => 'http://domainname/sample.txt',
));

我正在尝试一个内容大约50字节的txt文件,并且误差低于。

  

无法为提供的上传计算sha256校验和   身体,因为它不可寻求。为了防止出现此错误,您可以   要么1)包含ContentMD5或ContentSHA256参数   要求,2)使用可寻找的身体流,或3)包裹   GuzzleHttp \ Psr7 \ CachingStream对象中不可搜索的流。您   但应该小心,并记住CachingStream使用   PHP临时流。这意味着流将是临时的   存储在本地磁盘上。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

SourceFile必须是本地文件路径。 Body参数允许使用流,因此您应该可以使用guzzle执行请求并将正文传递给它。

$client = new GuzzleHttp\Client();
$response = $client->get('http://domainname/sample.txt');

$s3->putObject([
    'Bucket' => 'Bucket_Name',
    'Key' => 'AWS_ACCESS_KEY_ID',
    'Body' => $response->getBody(),
]);