6

在我的 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"))

我做错了吗?:)

顺便说一句- 我的 macbooks shell 是 python 2.7,app-engine 也是 2.7

4

2 回答 2

7

.svg不包含在默认types_map嵌入mimetypes模块中:

>>> import mimetypes
>>> print '.svg' in mimetypes.types_map
False

mimetypes模块从系统文件中添加额外的扩展名/mimetypes ,并且 svg 在大多数发行版中定义/etc/mime.types

$ cat /etc/mime.types  | grep svg
image/svg+xml                   svg svgz

但不幸的是,它没有在 App Engine 沙箱中定义。

您应该在公共问题跟踪器上填写缺陷

作为一种解决方法,您可以自己注册 mimetypemimetypes.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)
于 2012-04-27T12:04:05.483 回答
0

或者,您可以直接编辑 C:\Python27\Lib\mimetypes.py:

插入字典'.svg' : 'image/svg+xml'types_map

信用:来源

于 2014-06-08T03:19:04.670 回答