AWS S3 - 无法使用带有PHP的getObject()保存文件

时间:2013-01-29 19:36:21

标签: php amazon-web-services

我对使用AWS相对较新,并坚持我认为应该是一项基本任务。我正在使用PHP SDK版本2从我的一个存储桶中检索文件到我服务器上的临时目录。根据{{​​3}},我可以使用 getObject 来执行此操作。使用以下代码片段,我可以检索文件,但无法将实际内容保存到临时目录。

#1

$result = $s3->getObject(array(
    "Bucket" => $s3Bucket,
    "Key"    => $s3Path,
    "ResponseContentType" => "image/jpeg",
    "SaveAs" => EntityBody::factory(fopen($saveFile, "wb"))
));

#2

$result = $s3->getObject(array(
    "Bucket" => $s3Bucket,
    "Key"    => $s3Path,
    "ResponseContentType" => "image/jpeg",
    "SaveAs" => fopen($saveFile, "wb")
));

这两个请求都是成功的,因为它们返回对象但我仍然得到一个0字节的tmp文件。对此的任何见解都非常有用。

谢谢!

2 个答案:

答案 0 :(得分:3)

你可以尝试

use Guzzle\Http\EntityBody;

$s3Client->getObject(array(
  'Bucket' => $s3Bucket,
  'Key'    => $s3Path,
  'command.response_body' => EntityBody::factory(fopen($saveFile, 'w+'))
));

另外

$result = $s3Client->getObject(array(
    'Bucket' => $s3Bucket,
    'Key'    => $s3Path
));

file_put_contents ($saveFile, (string) $result['Body']);

答案 1 :(得分:0)

检查您的Amazon Bucket和Key是否正确。我收到此错误并发现AWS对象的路径不正确,这意味着文件已创建,但没有数据写入。