2016-11-29 1 views
1

Процесс установкиЗагрузить файл в S3 с помощью 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 байт содержимого и получил ошибку ниже.

Контрольная сумма sha256 не может быть рассчитана для предоставленной загрузки , так как она не была доступна для поиска. Чтобы предотвратить эту ошибку, вы можете: 1) включить параметры ContentMD5 или ContentSHA256 с запросом , 2) использовать поток для поиска для тела или 3) обернуть поток, не подлежащий поиску , в объект GuzzleHttp \ Psr7 \ CachingStream. Вы должны быть осторожны, и помните, что в CachingStream используются потоки PHP temp . Это означает, что поток будет временно , сохраненный на локальном диске.

Я что-то не хватает?

ответ

1

SourceFile должен быть локальным файловым путем. Параметр Body позволяет передавать поток, поэтому вы можете выполнить запрос с жужжанием и передать ему тело.

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

$s3->putObject([ 
    'Bucket' => 'Bucket_Name', 
    'Key' => 'AWS_ACCESS_KEY_ID', 
    'Body' => $response->getBody(), 
]); 
Смежные вопросы