我对使用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文件。对此的任何见解都非常有用。
谢谢!
答案 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对象的路径不正确,这意味着文件已创建,但没有数据写入。