7

是否可以只从 S3 获取对象自定义元数据而不必获取整个对象?我查看了 AWS SDK PHP 2 并搜索了 google 和 SO,但没有明确的答案,或者可能不是我希望的答案。

谢谢。

4

2 回答 2

6

也许对 PHP 2 有帮助?它使用我不熟悉的 Guzzle 框架。

执行 HeadObject 命令:HEAD 操作从对象检索元数据而不返回对象本身。如果您只对对象的元数据感兴趣,此操作很有用。要使用 HEAD,您必须对对象具有 READ 访问权限。

使用 Guzzle 框架的最终尝试(未经测试的代码):

use Guzzle\Service\Resource\Model
use Aws\Common\Enum\Region;
use Aws\S3\S3Client;

$client = S3Client::factory(array(
  "key" => "YOUR ACCESS KEY ID",
  "secret" => "YOUR SECRET ACCESS KEY",
  "region" => Region::US_EAST_1,
  "scheme" => "http",
));

// HEAD object
$headers = $client->headObject(array(
  "Bucket" => "your-bucket",
  "Key" => "your-key"
));
print_r($headers->toArray());

PHP 1.6.2 解决方案

// Instantiate the class
$s3 = new AmazonS3();
$bucket = 'my-bucket' . strtolower($s3->key);

$response = $s3->get_object_metadata($bucket, 'üpløåd/î\'vé nøw béén üpløådéd.txt');

// Success?
var_dump($response['ContentType']);
var_dump($response['Headers']['content-language']);
var_dump($response['Headers']['x-amz-meta-ice-ice-baby']);

归功于:http ://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_metadata

希望有帮助!

于 2013-07-18T18:22:28.717 回答
1

AWS HEAD 对象http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html

use Aws\S3\S3Client;
use Guzzle\Common\Collection;

$client = S3Client::factory(array(
'key' => 'YOUR-AWS-KEY',
'secret' => 'YOUR-SECRET-KEY'
));

// Use Guzzle's toArray() method.

$result = $client->headObject(['Bucket' => 'YOUR-BUCKET-NAME', 'Key' => 'YOUR-FILE-NAME'])->toArray();

print_r($result['Metadata']);
于 2015-07-11T18:00:23.067 回答