使用boto3上传到S3的音频文件内容类型更改/如何使用Tinys3将文件上传到存储桶中的S3子目录

时间:2018-04-01 13:19:41

标签: python-3.x amazon-s3 twilio boto3

我正在使用Python Twilio应用程序并使用Amazon Polly将文本转换为语音。如您所知,Twilio <play>动词只能从url播放声音文件。现在,我可以使用 Amazon Polly 将文本转换为语音音频,并将音频文件上传到S3,让Twilio使用公共网址播放。

但是当我使用boto3将mp3文件上传到S3时,内容类型将更改为二进制/八位字节流,这是Twilio不支持的。我试图在boto3中使用content-type参数,但没有成功。当我使用tinys3库时,它可以工作。但是,我无法将文件上传到S3子目录。 Tinys3只能上传到桶。我用Google搜索但没有看到任何关于tinys3将文件上传到S3子目录的示例。

那么请你帮我解决boto3的内容类型问题,或者将文件上传到带有Tinys3的存储桶中的S3子目录?

1 个答案:

答案 0 :(得分:0)

在AWS S3中,存储桶中的所有内容都被视为object。没有什么比你无法上传到子目录了。 test_subdir/test_file.txt被视为S3存储桶中的一个对象。

使用Tinys3将文件上传到存储桶中的S3子目录:

import tinys3
conn = tinys3.Connection(S3_ACCESS_KEY, S3_SECRET_KEY,tls=True)

f = open('test_file.txt','rb')
print (conn.upload('test_subdir/test_file.txt',f,'test_bucket'))
print (conn.get('test_subdir/test_file.txt','test_bucket'))

预期产量: enter image description here