python - 谷歌应用引擎上的 mimetypes.mime_guess() 行为异常

标签 python google-app-engine mime webapp2

在我的 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/

相关文章:

python - Airflow 网络服务器突然停止启动

ruby - App Engine Jruby DataMapper 列表属性

erlang - 解析 MIME 消息

javascript - 如何确定复制粘贴图像剪贴板的 MIME 类型?

python - Python 列表中\n 的索引

python - 如何从 Python 中的同一类访问第二个或其他定义的属性

java - 如何从谷歌驱动器读取大文件到 gae blobstore

python - 如何将值为 True 的数据存储中的所有属性移动到另一个数据存储?

php - 来自 PHP 的电子邮件已破坏主题 header 编码

python - 解封 : Can't get attribute 'Location' 时出现 AttributeError