【发布时间】:2020-03-23 20:10:00
【问题描述】:
我试图找到另一篇关于我的问题的文章,但失败了。
我的最终目标是将 html 文件上传到配置为托管静态网页的 S3 存储桶中。 我试过了:
s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
s3.upload_file(local_file, bucket, s3_file)
和
with open("index.html", "rb") as f:
s3.upload_fileobj(f, bucket, "index.html")
通过这两种方法,我成功上传了 html 文件。尽管如此,当我访问 URL 而不是显示 html 文件时,它会下载它。
我可以验证 S3 存储桶是否已配置为托管网页并显示与我使用 Python 上传的文件同名的文件。当我从我的文件夹手动上传文件时,它按预期工作。当我使用 Python 推送文件而不是显示它时,它会如上所述下载它。
以前有人经历过吗?我尝试的 2 x 功能是否不适合我需要做的工作?您认为 S3 存储桶有什么错误配置吗?
提前致谢,
【问题讨论】:
-
我认为
content-type设置不正确。 -
你好 Marcin, content-type 应该在 Python 脚本上设置还是在 S3 存储桶上进行配置?谢谢
-
它的对象级属性。以here 为例。
-
非常感谢@Marcin 确实是内容类型。我现在正在使用以下命令,它工作正常 s3.upload_file(local_file, bucket, s3_file,ExtraArgs={'ContentType': 'text/html'})
-
很高兴听到。我添加了答案以供将来参考。
标签: python amazon-web-services amazon-s3