Почему функция FindMimeFromData из Urlmon.dll возвращает MIME-тип «application / octet-stream» для многих типов файлов? - PullRequest
10 голосов
/ 29 января 2011

Почему функция FindMimeFromData из Urlmon.dll возвращает MIME-тип «application / octet-stream» для многих типов файлов, тогда как проверка MIME-типа по расширению файла (т.е. в реестре Windows) возвращает более точный тип?

Например, mp3 - это «application / octet-stream» вместо «audio / mp3».

В основном я хочу проверить загруженный файл с неверным расширением. Этот метод работает для многих файлов изображений, XML и т. Д.

Вопрос похож на этот , но предоставленное решение не подходит для проверки загруженных файлов, поскольку возвращаются разные / неоднозначные типы MIME.

Ответы [ 2 ]

5 голосов
/ 29 января 2011

Чтение документации для FindMimeFromData приведет меня к Обнаружению MIME-типа в Internet Explorer .Согласно этой информации трудно найти 26 различных типов MIME , что довольно мало в современном мире.«audio / mp3» не является одним из них.

FindMimeFromData содержит жестко заданные тесты для (в настоящее время 26) отдельного типа MIME (см. Известные типы MIME).Это означает, что если данный буфер содержит данные в формате одного из этих типов MIME, в FindMimeFromData существует тест, предназначенный (путем сканирования содержимого буфера) распознавать соответствующий тип MIME.Тип MIME известен, если это один из этих N типов MIME.Тип MIME является неоднозначным, если это «text / plain», «application / octet-stream», «пустая строка» или «null» (т. Е. Сервер не смог его предоставить).

К сожалению,похоже, что FindMimeFromData не очень пригодится для определения современных типов MIME.

3 голосов
/ 22 ноября 2012

Здесь есть хорошее решение: https://stackoverflow.com/a/9435701/74585, которое пытается определить тип файла из реестра (по расширению файла?), Если FindMimeFromData возвращает «application / octet-stream», «text / plain» или вообще ничего.

Вот библиотека определения типа файлов .NET http://filetypedetective.codeplex.com/, но в настоящий момент она обнаруживает лишь небольшое количество файлов.

...