3

我对使用 AWS 比较陌生,并且坚持我认为应该是一项基本任务。我正在使用 PHP SDK 版本 2 将文件从我的一个存储桶检索到我服务器上的临时目录。根据文档,我可以使用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 文件。对此的任何见解都非常受欢迎。

谢谢!

4

3 回答 3

6

你可以试试

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']);
于 2013-04-07T05:57:59.693 回答
0

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

于 2014-10-24T18:01:56.300 回答
0

文档

$s3Client->getObject(array(
  'Bucket' => $s3Bucket,
  'Key'    => $s3Path,
  'SaveAs' => $filePath
));
于 2021-12-08T20:01:57.003 回答