3

私は AWS の使用に比較的慣れていないため、基本的なタスクであると信じていることに固執しています。PHP SDK バージョン 2 を使用して、バケットの 1 つからサーバーの一時ディレクトリにファイルを取得しています。ドキュメントによると、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 に答える