保存到S3,但文件是空的

0 投票
2 回答
2559 浏览
提问于 2025-04-17 12:41

我在用一个答案把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 个回答

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,它就能正常工作。

撰写回答