如何在Amazon S3 Bucket上将Content-Disposition Headers设置为默认值

时间:2013-10-22 03:10:35

标签: php wordpress amazon-s3

我遇到的问题是我需要 Content-Disposition:attachment 标题出现在每个打到我的存储桶的文件上。

在Wordpress中,我可以使用.htaccess来覆盖有问题的文件类型(视频),但这些规则并没有扩展到我的S3下载,浏览器只是试图打开而不是下载。

我需要一个自动/默认解决方案,因为我不是唯一一个上传这些文件的人(我们的工作人员通过Wordpress上传,所有上传都存储在我们的S3存储桶中)。所以使用Cloudberry或其他浏览器对这种情况没有用。我无法基于每个文件调整文件(上传过于频繁)。

有办法做到这一点吗?

(其他信息:我在Wordpress上使用“Amazon S3和Cloudfront”插件,负责将两者连接在一起。不幸的是,该网站不公开,所以我无法链接到它。)

2 个答案:

答案 0 :(得分:7)

很遗憾没有办法在S3中为整个存储桶设置此值,而Cloudfront也只能设置缓存标头

但是在将文件上传到S3时可以set The Content-disposition parameter

对于现有文件,您必须更改标题,因此循环遍历Bucket中的每个对象,并copy it to itself using the new headers

我现在可以说,请将上传文件的代码发布到S3。

答案 1 :(得分:0)

首先,您需要找到将对象放入存储桶的代码。 您可以使用notepad ++在所使用的任何插件的php文件中搜索“ putObject ”。 来自另一个将文件存储到S3的WP插件的示例代码如下:

$this->s3->putObject( array(
            'Bucket'     => $bucket,
            'Key'        => $file['name'],
            'SourceFile' => $file['file'],
        ) );

现在,只需像这样添加ContentDisposition'=>'attachment':

$this->s3->putObject( array(
            'Bucket'     => $bucket,
            'Key'        => $file['name'],
            'SourceFile' => $file['file'],
            'ContentDisposition' => 'attachment',
        ) );

就这样:)