При загрузке PHP я пытаюсь проверить тип MIME загружаемых файлов в соответствии с допустимым набором типов MIME для приложения. При попытке использовать fileinfo () для определения типа MIME для файла Office 2007 НЕ обнаруживается в качестве соответствующих MIME-типов. Вместо этого ответ типа MIME является «application / zip»
Офисный документ Типы MIME: http://filext.com/faq/office_mime_types.php
Пример кода PHP:
$ oFileInfo = new finfo (FILEINFO_MIME_TYPE);
$ sMimeType = $ oFileInfo -> file ($ _FILES ['Filedata'] ['tmp_name']);
echo $ sMimeType;
Информация о настройке сервера:
Я нашел множество сообщений, которые ссылаются на проблемы с новым форматом Office при загрузке с веб-сервера. Во всех этих примерах я нигде не нашел, что иллюстрирует усадьбу добавления новых типов MIME в существующий файл magic.mime или ссылку на файл magic.mime, который уже содержит типы MIME Microsoft Office 2007+. Спасибо за вашу помощь.
Новые файлы Office – это ZIP-архивы. Вот почему база данных MIME Magic обнаруживает их как файлы ZIP. Возможно, вам нужно будет добавить специальные правила на основе расширения файла или посмотреть в ZIP-файл, чтобы узнать, есть ли у docProps
папка docProps
(в почтовых архивах Office есть такая папка, содержащая метаданные о документе).
Существуют и другие форматы файлов, которые фактически представляют собой ZIP-архивы с другим расширением, например JAR-файлы.
- Да, вы должны обновить magic.mime.
lol, да, просто обновите его, проблема решена. К сожалению, похоже, что системы типа «магия тим» работают независимо от фактического содержимого файла, а поскольку файл сжат, он не может распаковать (и посмотреть, какой файл?)
кто-то предложил написать функцию для распаковки сжатых файлов, а затем, например, проверку наличия каталога «DocProps». Но это приведет к появлению другого вектора атаки на производственный сервер.
Вы пытались добавить новые типы mime в IIS?
magic.mime
. $_FILES['Filedata']['type']
mime-типа, отправленного из браузера ( $_FILES['Filedata']['type']
) Примечание: finfo () определяет тип MIME файла по его магическим байтам; учитывая, что файлы Office 2007 (и многие другие форматы файлов, например, ePUB) – это просто пакеты zip с указанной структурой каталогов, разумно иметь finfo()
для возврата application/zip
.
Я бы предложил распаковать или перечислить содержимое, чтобы проверить его структуру, если вы действительно хотите определить тип файла на основе его содержимого (а не отчеты браузера MIME-типа при загрузке)