使用 Boto 上传目录时设置 Content-Type 键

Posted

技术标签:

【中文标题】使用 Boto 上传目录时设置 Content-Type 键【英文标题】:Setting Content-Type key when uploading directory using Boto 【发布时间】:2015-07-22 17:04:27 【问题描述】:

我正在使用 os.walk 获取文件目录,然后使用 boto 建议的上传大文件的方式。根据我的阅读,我需要在上传时设置内容类型键,但该目录有多种文件类型,需要不同的内容类型键。关于如何为每个文件获取正确的内容类型以便可以在密钥中设置的任何建议?哑剧类型库?还有什么?

【问题讨论】:

【参考方案1】:

来自documentation:

当您从文件或文件名向 S3 发送数据时,boto 将尝试确定该文件的正确 mime 类型并将其作为 Content-Type 标头发送。 boto 包使用 Python 中的标准 mimetypes 包进行 mime 类型猜测。

来自source:

self.content_type = mimetypes.guess_type(self.path)[0]

【讨论】:

感谢您的链接。但我发现情况并非如此。例如,当我使用 boto 上传 .jpg 时,它将内容类型设置为二进制/八位字节流。如果我在 s3 接口上传文件,或者使用传输发送相同的文件,它们都设置了正确的内容类型。 是的,代码会很有帮助。此外,如果由于某种原因 boto 无法正确猜测 mime 类型,您始终可以通过设置 Key 对象的 content_type 属性来显式设置 mime 类型。

以上是关于使用 Boto 上传目录时设置 Content-Type 键的主要内容,如果未能解决你的问题,请参考以下文章

Boto3没有将zip文件上传到S3 python

使用 Amazon s3 boto 库,如何获取已保存密钥的 URL?

如何将文件上传到 S3 并使用 boto3 将其公开?

使用boto3批量上传图片到S3

python 使用boto进行并行化分段上传的示例

使用 lambda 函数通过 s3 存储桶将巨大的 .csv 文件上传到 dynamodb 时出错