6

私のpythonシェルでは、私はできる

>>> 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"))

私はそれを間違っていますか?:)

ところで-私のmacbooksシェルでは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モジュールは、システム ファイルから追加の拡張子/MIME タイプを追加します。svg は、ほとんどのディストリビューションで定義されています。/etc/mime.types

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

残念ながら、App Engine サンドボックスでは定義されていません。

パブリック イシュー トラッカーで欠陥を埋める必要があります

回避策として、MIME タイプを自分で登録できます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)
于 2012-04-27T12:04:05.483 に答える
0

または、C:\Python27\Lib\mimetypes.py を直接編集することもできます。

辞書に挿入'.svg' : 'image/svg+xml'します。types_map

クレジット:ソース

于 2014-06-08T03:19:04.670 に答える