如何将内容处置标头设置为 Amazon S3 存储桶上的默认值


How to set Content-Disposition Headers as a default on Amazon S3 Bucket

我遇到的问题是我需要内容处置:附件标头存在于每个命中我的存储桶的文件中。

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

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

有没有办法做到这一点?

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

不幸的是,无法为 S3 中的整个存储桶设置此设置,而且 Cloudfront 也只能设置缓存标头

但是,您可以在将文件上传到 S3 时设置内容处置参数。

对于现有文件,您必须更改标头,因此循环遍历存储桶中的每个对象,并使用新标头将其复制到自身。

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

首先,您需要找到将对象放入存储桶的代码。您可以使用记事本++在您正在使用的任何插件的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',
        ) );

就是这样:)

是的

,您可以使用存储桶资源管理器的存储桶默认功能为 S3 存储桶中的每个即将上传的文件设置默认的内容处置标头。

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

你只需要——

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

然后更新文件的元数据。

请参阅此页面以设置文件的内容处置。

更多参考资料:

  • http://www.bucketexplorer.com/documentation/amazon-s3--metadata-http-header-bucket-default-metadata.html
  • http://www.bucketexplorer.com/documentation/amazon-s3--how-to-manage-http-headers-for-amazon-s3-objects.html
  • http://www.bucketexplorer.com/documentation/amazon-s3--metadata-http-header-update-custom-metadata.html

谢谢