我正在使用此答案将PNG上传到S3:
https://stackoverflow.com/a/6693577/815878
该文件正在上传到S3但是每当我双击图像显示它时,网址为“about:blank”,屏幕为空白。
当我下载图像时,它会在我的计算机上显示为我保存的图像。我最后的办法是手动测试网址。我把照片公之于众,然后尝试了:
https://s3.amazonaws.com/BUCKET_NAME/IMAGE_NAME.png
给了我这个:
上面的答案还有另一个步骤是不正确地上传文件吗?我将粘贴我的代码(这与上面的链接非常相似)以防万一...
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())
答案 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'})