2015-11-09 5 views
0

Я сохраняю изображения в своем ведомом s3, но хотя я вижу, что файлы сохранены, я не могу их открыть. В firefox я получаю сообщение об ошибке: «Изображение не отображается, потому что оно содержит erros». Этот код работал при сохранении изображений на сервер, так что я просто изменил его, чтобы сохранить соответственно в ведре:Сохраненное изображение 'не может быть отображено, потому что оно содержит ошибки

$s3 = S3Client::factory(array(
    'region' => $region, 
    'version' => $version 
)); 

$bucket = "test"; 
$file_path = $bucket . "/this/is_working/"; 

try { 

    $content_type = "image/" . $extension; 

    // Upload a file. 
    $result = $s3->putObject(array(
      'Bucket'  => $bucket, 
      'Key'   => $file_path, 
      'ACL'   => 'public-read', 
      'ContentType' => $content_type, 
      'Body' => $_FILES['picture']['tmp_name'] 
    )); 

Как я уже говорил, я вижу файл с его именем .png, но всякий раз, когда я пытаюсь получить ссылка http://region.amazonaws.com/bucket/file сбой «не может быть отображен, потому что содержит ошибки». Любая идея по этому поводу? TYVM за вашу помощь ...

+0

может быть проще диагностировать, если вы ссылаетесь на одно из изображений, связанных с s3. – tedder42

ответ

0

Я думаю, что если бы вы открыли одно из этих изображений прямо сейчас, вы обнаружите, что это текстовый файл, содержащий имя файла, который вы пытались загрузить.

Попробуйте использовать 'Исходных_файлов' вместо 'Body' в вызове putObject:

$result = $s3->putObject(array(
      'Bucket'  => $bucket, 
      'Key'   => $file_path, 
      'ACL'   => 'public-read', 
      'ContentType' => $content_type, 
      'SourceFile' => $_FILES['picture']['tmp_name'] 
    )); 

Или открыть файл и поток содержимого:

$result = $s3->putObject(array(
      'Bucket'  => $bucket, 
      'Key'   => $file_path, 
      'ACL'   => 'public-read', 
      'ContentType' => $content_type, 
      'Body' => fopen($_FILES['picture']['tmp_name'], 'r+') 
    )); 

документация SDK предоставляет дополнительные примеры http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html#_putObject

Смежные вопросы