我正在将我的代码从 AWS PHP SDK1 迁移到 SDK2 ( https://github.com/aws/aws-sdk-php )。
我有一个图片上传器。在我以前的版本中,我会像这样指定图像的 Content-Type:
$response = $this->s3->create_object(
$bucket,
$key,
array(
'fileUpload'=>$file_resource,
'contentType'=>$mime,
'acl' => AmazonS3::ACL_PUBLIC,
)
);
这是我的新版本:
$response = $this->s3->upload(
$bucket,
$key,
$file_resource,
'public-read',
array('params' => array('Metadata' => array('ContentType'=>$mime)))
);
我尝试了 ContentType 的不同拼写,在 S3 站点中,它修改名称看起来像“x-amz-meta-contenttype”,而“Content-Type”的值是默认的“二进制/八位字节流”。
我也尝试过使用 EntityBody 功能,但结果相同:
$response = $this->s3->upload(
$this->bucket,
$to,
EntityBody::factory($file_resource),
'public-read',
array('params' => array('Metadata' => array('ContentType'=>$mime)))
);
如何在这个新 API 中设置内容类型?
编辑:我在文档中的某处看到:
适用于 PHP 的 AWS 开发工具包将尝试自动确定用于存储对象的最合适的 Content-Type 标头。如果您使用的是不太常见的文件扩展名并且没有自动添加 Content-Type 标头,则可以通过将 ContentType 选项传递给操作来添加 Content-Type 标头。
首先,我正在上传简单的图像,但根据我的 S3 仪表板,它们被上传为“二进制/八位字节流”。关于他们的第二点,我尝试了许多带有“ContentType”的数组组合我不确定为什么它不起作用......