2012-04-27 1 views
4

В моей оболочке Python, я могу сделатьmimetypes.mime_guess() на Google App Engine ведет себя странно

>>> 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 - Это питон 2,7 в мои MacBooks оболочки, а также 2.7 на приложение-двигатель

+0

я сталкиваюсь такая же проблема с .docx, .xlsx, .Webm, AIND много других расширений файлов: guess_type работает отлично в Dev среде, и возвращает None в Google App Engine. – patb

+0

Обходной путь, который я нашел, заключается в том, чтобы взять mimetypes.types_map dict из dev env и использовать созданную вручную функцию guess_type, которая выполняет get() на этом dict. – patb

ответ

5

.svg не входит в значение по умолчанию types_map embbeded в mimetypes модуле:

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

mimetypes добавьте дополнительные расширения/миметики от system files, а svg определяется для большинства распределений в /etc/mime.types

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

Но, к сожалению, он не определен в песочнице App Engine.

Вы должны заполнить дефект на public issue tracker

В качестве временного решения можно зарегистрировать MIMETYPE себя 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) 
+0

спасибо за разъяснение и обходное решение :) - но действительно ли это считается дефектом? – fasmide

+0

Я мог бы также рассматриваться как запрос функции :) – proppy

0

В качестве альтернативы можно непосредственно редактировать C: \ python27 \ Lib \ mimetypes.py:

Вставьте '.svg' : 'image/svg+xml' в словарь types_map.

кредит: source

Смежные вопросы