保存到S3,但文件为空

时间:2012-02-09 15:46:19

标签: python amazon-s3 png binary-data

我正在使用此答案将PNG上传到S3:

https://stackoverflow.com/a/6693577/815878

该文件正在上传到S3但是每当我双击图像显示它时,网址为“about:blank”,屏幕为空白。

当我下载图像时,它会在我的计算机上显示为我保存的图像。我最后的办法是手动测试网址。我把照片公之于众,然后尝试了:

https://s3.amazonaws.com/BUCKET_NAME/IMAGE_NAME.png

给了我这个:

enter image description here

上面的答案还有另一个步骤是不正确地上传文件吗?我将粘贴我的代码(这与上面的链接非常相​​似)以防万一...

image = Image.open(self.image)
conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
out_im2 = cStringIO.StringIO()
image.save(out_im2, 'PNG')
b = conn.get_bucket('new_test_bucket')
k = b.new_key(self.title+'.png')
k.set_contents_from_filename(out_im2.getvalue())

2 个答案:

答案 0 :(得分:3)

我更像是一个PHP而不是Python人,但据我所知,Amazon S3需要定义文件的类型。

您需要发送mime类型(例如image / png)供服务器识别文件,因为S3不是实际的Web服务器,它不关心文件的扩展名。您可以同样称它为“dipididoo.moo”,只要类型为image / png,它就可以工作。

答案 1 :(得分:1)

设置mimetype如下:

k.set_contents_from_filename(out_im2.getvalue(), {'Content-Type' : 'image/png'})