在我的 python shell 中,我可以做到
>>> import mimetypes
>>> mimetypes.guess_type("ulla.svg")
('image/svg+xml', None)
它的行为符合预期,但是,在谷歌应用引擎上运行相同的代码(或者至少,这个相同的例子),它返回 (None, None)
class TestHandler(webapp2.RequestHandler):
def get(self):
import mimetypes
self.response.out.write(mimetypes.guess_type("ulla.svg"))
我做错了吗? :)
顺便说一句 - 在我的 macbook shell 中是 python 2.7,在应用引擎上也是 2.7
最佳答案
.svg
不包含在 mimetypes
模块中嵌入的默认 types_map
中:
>>> import mimetypes
>>> print '.svg' in mimetypes.types_map
False
mimetypes
模块从 system files 添加额外的扩展/mimetypes , 并且 svg 在 /etc/mime.types
$ cat /etc/mime.types | grep svg
image/svg+xml svg svgz
但不幸的是,它没有在 App Engine 沙箱中定义。
您应该在 public issue tracker 上填写一个缺陷
作为解决方法,您可以使用 mimetypes.add_type
自行注册 mimetype
>>> 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)
关于python - 谷歌应用引擎上的 mimetypes.mime_guess() 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10343468/