Могу ли я надежно определить правильный тип пантомимы для обслуживания ненадежного контента? - PullRequest
0 голосов
/ 23 октября 2010

Скажем, я позволяю пользователям загружать файлы на мой сервер, и я позволяю пользователям загружать их.Я хотел бы установить для типа MIME нечто иное, чем просто application / octet-stream, чтобы браузер мог их просто открыть (например, для изображений, файлов PDF, текстовых файлов и т. Д.)Поскольку файлы загружаются пользователями, я не могу доверять расширению файла и т. д.

Существует ли хорошая библиотека для определения того, какой тип mime идет с произвольным BLOB-объектом?Желательно использовать из Python: -)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 октября 2010

Попробуйте Python-Magic .

1 голос
/ 23 октября 2010

Остерегайтесь текстовых файлов: нет способа узнать, в какой кодировке они находятся, и нет надежного способа угадать, тем более что большинство созданных в Windows кодировок в 8-битных кодировках MBCS, которые неразличимы без языковой эвристики.Вам нужно знать кодировку, а не только MIME-тип, чтобы установить полный Content-Type для файла, который будет доступен для просмотра в браузере.Если вы хотите разрешить загрузку и отображение текста, гораздо безопаснее использовать текстовую форму HTML, чем загрузку необработанного файла.

Также обратите внимание, что файл может иметь несколько типов файлов;например, самораспаковывающиеся ZIP-файлы являются допустимыми исполняемыми файлами Windows и ZIP-файлами и могут рассматриваться как любые.

...