2014-09-17 4 views
2

Я установил amazon aws SDK для php. Я пытаюсь загрузить файл с сервера в ведро s3. Итак, вот текущий поток, пользователь загружает картинку, мы сохраняем ее, затем запускаем сценарий обрезки. Затем мы получим изображение, обрезанное и готовое к работе, сохраненное на нашем экземпляре ec2. Затем я хочу перенести этот файл в ведро s3, чтобы удалить его с сервера. Моя проблема заключается в том, что процесс загрузки «работает», но все файлы, которые загружаются, составляют 20-50 байтов. Вот мой код нижеAmazon S3 Bucket Загрузить все файлы пустые

$s3 = App::make('aws')->get('s3'); 
$s3->putObject(array(
'Bucket'  => 'images', 
'ACL'   => 'public-read', 
'Key'  => '/avatars/myImage.jpg', 
'ContentType' => 'image/jpeg', 
'Body' => $imgUrl 
)); 

Это создает файл на моем амазонка s3 ведро, правого типа, расположения и разрешений. Но файл всегда 20-50bytes aka empty. Любая идея, что может быть причиной этого? $ imgUrl - путь к файлу.

+0

Как выглядит файл на сервере перед загрузкой? –

+0

Если я вручную перейду в файл на сервере ec2, во время загрузки или после того, как он выглядит полностью нормальным и не будет 20-50 байт. – CMOS

+2

Попробуйте следующее: ** ''Тело' => fopen ($ pathToFile, 'r +')' **. Из документации: «Передайте строку, содержащую тело, дескриптор, возвращаемый fopen, или объект Guzzle \ Http \ EntityBodyInterface» – slayedbylucifer

ответ

4

Попробуйте: 'Body' => fopen($pathToFile, 'r+')

Из documentation

Передаёт строку, содержащую тело, ручка, возвращаемый FOPEN или жрать \ Http \ EntityBodyInterface объект

+0

Вы можете увидеть пример этого [на README SDK] (https://github.com/aws/aws-sdk-php#upload-a-file-to-amazon-s3) и [в Руководстве пользователя SDK ] (http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-s3.html#uploading-objects). –