^{}为我工作
完整代码import boto
from boto.s3.connection import S3Connection
from boto.s3.key import Key
# import urllib
# from io import BytesIO
AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY')
AWS_SECRET_KEY = os.environ.get('AWS_SECRET_KEY')
AWS_BUCKET_NAME = os.environ.get('S3_BUCKET_NAME')
import base64
我是在django视图中这样做的,所以我读取base64数据,并在此时将其分配给一个名为cover_art的变量。
然后我把它保存到S3,就像这样:connection = boto.connect_s3()
bucket = connection.get_bucket(AWS_BUCKET_NAME)
cloudfile = Key(bucket)
path = "images/" + me.username + "/" + "cover-image-001.jpg"
cloudfile.key = path
cloudfile.set_contents_from_string(base64.b64decode(cover_art))
cloudfile.set_metadata('Content-Type', 'image/jpeg') # from https://stackoverflow.com/a/22730676 and https://stackoverflow.com/questions/16156062/using-amazon-s3-boto-library-how-can-i-get-the-url-of-a-saved-key
cloudfile.set_acl('public-read')
附加注释
几个小时前,我对base64编码还不太熟悉,所以我甚至不知道应该如何使用boto。万一你给博托喂错了东西,这里有一个关于我使用的变量“封面艺术”的额外说明。
假设数据是这样的:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFR...
如果我想像这样显示图片,我需要把它放到网页上
然而,在这里的python代码中,我提供给boto的部分是没有介绍的。所以我的变量是这样的:cover_art = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFR..."
我实际上是从一张看起来像
(如果您也在使用表单,并希望在提交时在浏览器中检查此表单,请尝试使用javascript获取表单,然后显示它,例如alert(theForm.innerHTML))
注意,这里没有滑稽的角色,看起来不像ÿØÿà...
(希望你能从我使用的语言中看出我是n00b!)
顺便说一句,我之所以发这个帖子是因为某些原因,我无法让set_contents_from_file(file_obj)方法为我工作。。。不过,谢谢你的回复,很高兴看到这种方法对你有用。