当前位置: 首页 > 知识库问答 >
问题:

在S3中使用Boto3的AWS内容类型设置

段恩
2023-03-14

我试图上传一个网页到S3桶使用亚马逊的Boto3 SDK为Python。

设置内容类型时遇到问题。AWS不断为内容类型创建一个新的元数据键,除了我使用此代码指定的元数据键之外:

# Upload a new file
data = open('index.html', 'rb')
x = s3.Bucket('website.com').put_object(Key='index.html', Body=data)
x.put(Metadata={'Content-Type': 'text/html'})

对于如何将内容类型设置为文本/html的任何指导,我们将不胜感激。


共有3个答案

全兴运
2023-03-14

这里,data是一个打开的文件,而不是它的内容:

# Upload a new file
data = open('index.html', 'rb')

要读取(二进制)文件,请执行以下操作:

import io

with io.open("index.html", mode="rb") as fd:
    data = fd.read()

那样会更好。

朱宜
2023-03-14

您还可以使用upload_file()方法和ExtraArgs关键字(并将权限设置为World read):

import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file('source_file_name.html', 'my.bucket.com', 'aws_file_name.html', ExtraArgs={'ContentType': "application/json", 'ACL': "public-read"} )
宫子晋
2023-03-14

Content-Type不是自定义元数据,这是用于Metadata的。它有自己的属性,可以这样设置:

bucket.put_object(Key='index.html', Body=data, ContentType='text/html')

注意:。put_object()可以设置的不仅仅是内容类型。其余部分请查看Boto3文档。

 类似资料:
  • 问题内容: 我正在尝试使用Amazon的Boto3 SDK for Python将网页上传到S3存储桶。 我无法设定。除了我使用此代码指定的密钥外,AWS还在继续为它创建新的元数据密钥: 任何有关如何设置为的指导将不胜感激。 问题答案: 不是 自定义 元数据,而是用于此的。它具有自己的属性,可以这样设置: 注意:可以设定更多。查看其余的Boto3文档。

  • boto3文档建议从命令行配置密钥。如果有的话,我可以把AWS键放入python源代码中吗?下面是供参考的代码。

  • 我通过执行以下操作读取S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于打开(filename).readlines()。最好的方法是什么?

  • 问题内容: 我这样做是读取了S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于。什么是最好的方法? 问题答案: boto3提供了一种资源模型,该资源模型使诸如迭代对象之类的任务变得更加容易。不幸的是,StreamingBody不提供或。

  • 问题内容: 因此,我在Struts2中使用freemarker模板来制定我的响应。但是,由于我也尝试使用taconite,因此需要使用“ text / xml”的内容类型发送响应。我似乎找不到使用freemarker指令设置内容类型的方法,而且我对Struts并不精通,无法知道是否有办法通过它来完成。 那么,我应该怎么做呢? 问题答案: 或者您可以在struts.xml中进行设置

  • 实例类型:(T2.Micro,T2.Small,C4.Large...)下面列出的内容:http://docs.aws.amazon.com/awsec2/latest/userguide/instance-types.html 我已经浏览了客户和服务的文档,但我找不到任何接近的东西。我甚至还没有找到一个列出其他碰巧表示所有实例类型的方法。 有人对Boto3有更多的经验吗?