使用boto将公共URL上可用的图像上传到S3
我在Python网络环境中工作,我可以使用boto的key.set_contents_from_filename(path / to /
file)将文件从文件系统上传到S3。但是,我想上传已经在网络上的图像(例如https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large)。
我是否应该以某种方式将映像下载到文件系统,然后照常使用boto将其上传到S3,然后删除映像?
理想的情况是,如果有一种方法可以获取boto的key.set_contents_from_file或其他可以接受URL并将其很好地流式传输到S3的命令,而不必显式地将文件副本下载到我的服务器。
def upload(url):
try:
conn = boto.connect_s3(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
bucket_name = settings.AWS_STORAGE_BUCKET_NAME
bucket = conn.get_bucket(bucket_name)
k = Key(bucket)
k.key = "test"
k.set_contents_from_file(url)
k.make_public()
return "Success?"
except Exception, e:
return e
如上所述,使用set_contents_from_file时,出现“字符串对象没有属性’tell’”错误。将set_contents_from_filename与url一起使用时,出现No
such file or directory
error。该博托存储文档的叶子掉在上传本地文件和未提及远程存储的文件上传。