php - 从 PHP AWS SDK 为 S3 对象设置缓存控制 HTTP header

标签 php amazon-web-services amazon-s3

我使用 Amazon SDK for PHP 并尝试在图像上设置缓存控制 header 。当我尝试通过 MetaData = array("Cache-Control") 添加它时,它会在我登录 S3 存储桶时将其更改为 x-amz-meta-cache-control,并且当我下载文件时,没有缓存- 控制集。但是如果我手动更改此设置,缓存控件将完美运行。是否缺少一些我可以用来在上传时以编程方式设置 HTTP 请求 header 的参数?我正在使用 PutObject 方法。我相信 AWS SDK 来自 2013 年。

最佳答案

缓存控制不是通过“MetaData”索引设置的,“CacheControl”与“MetaData”处于同一级别,不包含在其中。

http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_putObject

您将使用类似这样的东西作为 putObject() 方法的配置数组...

$s3client->putObject(array(
  'Bucket' => '...',
  'key' => '...',
  'body' => '...',
  'CacheControl' => 'max-age=172800',
  'MetaData' => array(
    'metaKey' => 'metaValue',
    'metaKey' => 'metaValue'
)));

对于 upload() 方法...

$s3client->upload(
  'bucket',
  'key',
  fopen('sourcefile','r'),
  'public-read',
  array('params' => array(
    'CacheControl' => 'max-age=172800',
    'Metadata' => array(
      'metaKey' => 'metaValue',
      'metaKey' => 'metaValue'
))));

此外,值得指出的是,对于 5MB 大小的文件,upload() 将包装 putObject(),否则它将发起分段上传请求。

关于php - 从 PHP AWS SDK 为 S3 对象设置缓存控制 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19415219/

相关文章:

javascript - 使用 Bootstrap Modal 和 Laravel 5.2 更新数据库值

php - 从 Symfony 中的存储库内部记录

amazon-web-services - AWS CLI执行Lambda函数问题

javascript - 上传图片到s3 bucket node js

amazon-web-services - spring boot 应用程序在 ec2 上自动关闭

php - 在两个 phpMyAdmin 表之一中插入多个(fk)数据

amazon-web-services - 如何在不使用生命周期规则的情况下将 S3 Standard 转换为 Glacier

swift - 在 Swift 中从 AWS S3 下载请求

hadoop - 解析参数错误,amazon aws emr

php - 将xml上传到mysql php - 在表中插入无值