在我的python shell中,我可以做
>>> import mimetypes
>>> mimetypes.guess_type("ulla.svg")
('image/svg+xml', None)
而且它的行为符合预期,但是,在Google App Engine上运行相同的代码(或至少是该示例),它会返回
(None, None)
class TestHandler(webapp2.RequestHandler):
def get(self):
import mimetypes
self.response.out.write(mimetypes.guess_type("ulla.svg"))
我做错了吗? :)
BTW -在我的Macbooks Shell中为python 2.7,在应用程序引擎上为2.7
最佳答案
.svg
模块中嵌入的默认types_map
中不包括mimetypes
:
>>> import mimetypes
>>> print '.svg' in mimetypes.types_map
False
mimetypes
模块从system files添加其他扩展名/MIME类型,并且svg在/etc/mime.types
的大多数发行版中定义$ cat /etc/mime.types | grep svg
image/svg+xml svg svgz
但是很遗憾,它没有在App Engine沙箱中定义。
您应该在public issue tracker上填写一个缺陷
解决方法是,您可以使用
mimetypes.add_type
自己注册模仿类型>>> import mimetypes
>>> mimetypes.guess_type("ulla.svg")
(None, None)
>>> mimetypes.add_type("image/svg+xml", ".svg")
>>> mimetypes.guess_type("ulla.svg")
('image/svg+xml', None)