我知道我可以通过使用 POST 到 App Engine 的表单来接受图片上传,如下所示:
<form action="/upload_received" enctype="multipart/form-data" method="post">
<div><input type="file" name="img"/></div>
<div><input type="submit" value="Upload Image"></div>
</form>
然后在Python代码中我可以做类似的事情
image = self.request.get("img")
但是,当稍后向用户显示此图像时,如何确定该图像的内容类型应该是什么?似乎最可靠的方法是从图像数据本身中找出这一点,但如何轻松获得呢?我在 google.appengine.api 图像包中没有看到任何合适的东西。
我应该只在我自己的代码中寻找神奇的图像标题,还是在某个地方已经有一种方法?
编辑:
这是我最终使用的简单解决方案,对于我的目的来说似乎工作得很好,并且避免了将图像类型作为单独的字段存储在数据存储中:
# Given an image, returns the mime type or None if could not detect.
def detect_mime_from_image_data(self, image):
if image[1:4] == 'PNG': return 'image/png'
if image[0:3] == 'GIF': return 'image/gif'
if image[6:10] == 'JFIF': return 'image/jpeg'
return None