使用 AWS SDK PHP v2 将文件上传到 Amazon S3 时,我在设置“元数据”选项时遇到问题。我正在阅读的有关 upload() 方法的文档指出,第 5 个参数是一个选项数组...
*$options 执行命令时使用的自定义选项: - params:用于上传的自定义参数。参数必须映射到 PutObject或 InitiateMultipartUpload 操作参数。- min_part_size:执行分段上传时允许每个上传部分的最小大小。- 并发:并发分段上传的最大数量。- before_upload:在每次分段上传之前调用的回调。回调将接收带有上下文的 Guzzle\Common\Event 对象。*
我的upload()
代码看起来像这样..
$upload = $client->upload(
'<BUCKETNAME>',
'metadatatest.upload.jpg',
fopen('metadatatest.jpg','r'),
'public-read',
array('Metadata' => array(
'SomeKeyString' => 'SomeValueString'
))
);
...上传后没有设置元数据。
但是,如果我putObject()
按照此处记录upload()
的方式使用,我认为与...相比,这是一种“较低级别”的方法
$putObject = $client->putObject(
array(
'Bucket' => '<BUCKETNAME>',
'Key' => 'metadatatest.putobject.jpg',
'Body' => file_get_contents('metadatatest.jpg'),
'ACL' => 'public-read',
'Metadata' => array(
'SomeKeyString' => 'SomeValueString'
)
)
);
getObject()
使用上传时直接在浏览器中调用或查看文件时成功返回元数据putObject()
$getObject = $client->getObject(
array(
'Bucket' => '<BUCKETNAME>',
'Key' => 'metadatatest.putobject.jpg'
)
);
我更愿意使用$client->upload()
文档所述的方法
将文件、流或字符串上传到存储桶。如果上传大小超过指定阈值,将使用并行分段上传执行上传。
我不确定我错过了什么?