10

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

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

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

有没有办法做到这一点?

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

4

3 回答 3

13

不幸的是,无法为 S3 中的整个存储桶设置此设置,而且 Cloudfront 只能设置 Cache-Headers

但是您可以在将文件上传到 S3 时设置 Content-disposition 参数。

对于现有文件,您必须更改 Header,因此遍历 Bucket 中的每个对象,并使用新的 headers 将其复制到自身

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

于 2013-11-05T19:17:14.560 回答
1

首先,您需要找到将对象放入存储桶的代码。您可以使用 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',
        ) );

而已 :)

于 2018-08-08T16:42:01.013 回答
-1

是的,您可以使用 Bucket Explorer 的Bucket Default功能为您的 S3 存储桶中每个即将上传的文件设置默认的 Content-Disposition标头。

对于现有文件,您可以使用更新元数据选项批量更新存储桶中存在的每个文件的元数据。

你只需要 -

Select Key as : Content-Disposition
Add Value as : attachment;filename={$file_name_without_path_$$}

然后更新文件的元数据。

请参阅此页面以在您的文件上设置 Content-Disposition

更多参考:

谢谢

于 2013-11-12T07:20:06.660 回答