保存到S3,但文件是空的
我在用一个答案把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())
2 个回答
1
将文件的类型设置成下面这样:
k.set_contents_from_filename(out_im2.getvalue(), {'Content-Type' : 'image/png'})
3
我比较擅长PHP,不太懂Python,不过我知道亚马逊的S3服务需要你定义文件的类型。
你需要发送一个mime类型(比如说image/png),这样服务器才能识别这个文件。因为S3并不是真正的网页服务器,所以它并不太在乎你文件的后缀名。你可以把文件叫做“dipididoo.moo”,只要类型是image/png,它就能正常工作。