首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不创建临时本地文件的情况下将文件上传到S3

如何在不创建临时本地文件的情况下将文件上传到S3
EN

Stack Overflow用户
提问于 2012-09-25 02:09:13
回答 10查看 48.5K关注 0票数 36

有没有可行的方法将动态生成的文件直接上传到亚马逊s3,而无需首先创建本地文件,然后上传到s3服务器?我使用python。谢谢

EN

回答 10

Stack Overflow用户

发布于 2015-06-12 01:18:00

下面是一个下载图片(使用requests库)并上传到s3,而不写入本地文件的示例:

代码语言:javascript
复制
import boto
from boto.s3.key import Key
import requests

#setup the bucket
c = boto.connect_s3(your_s3_key, your_s3_key_secret)
b = c.get_bucket(bucket, validate=False)

#download the file
url = "http://en.wikipedia.org/static/images/project-logos/enwiki.png"
r = requests.get(url)
if r.status_code == 200:
    #upload the file
    k = Key(b)
    k.key = "image1.png"
    k.content_type = r.headers['content-type']
    k.set_contents_from_string(r.content)
票数 26
EN

Stack Overflow用户

发布于 2014-08-09 09:31:16

您可以使用Python标准库中的BytesIO

代码语言:javascript
复制
from io import BytesIO
bytesIO = BytesIO()
bytesIO.write('whee')
bytesIO.seek(0)
s3_file.set_contents_from_file(bytesIO)
票数 17
EN

Stack Overflow用户

发布于 2012-09-25 02:17:13

我假设您使用的是botobotoBucket.set_contents_from_file()将接受StringIO对象,并且您编写的任何用于将数据写入文件的代码都应易于修改以写入StringIO对象。或者,如果您生成一个字符串,则可以使用set_contents_from_string()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12570465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档