Bermuda
Новичок
Как определить mime type файла?
Пользователь загружает файлы на сервер.
Загрузка асинхронная. (Пример смотрите на http://panoramio.com/)
В зависимости от содержимого, может применяться некая постобработка. Например, изменение размера для изображений, перекодирование для видео. Также попадаются "обычные" документы с которыми ничего делать не нужно. В последствии в зависимости от своего типа, файлы отображаются по разному: картинки отображаются как картинки, видео транслируется flash-плеером, а документы скачиваются. Также мне необходимо разрешить загружать на сервер файлы только определенных типов, ограничивая это "белым списком".
Требуется каким-то образом различать содержимое файлов.
Способ первый:
в массиве $_FILES смотреть какой mime type шлет обозреватель пользователя. Эти данные шлет клиент и доверять им не стоит. Более того, если в системе не установлен МС Офис, то обозреватель шлет application/data, что не верно. Более того, при постобработке этих данных просто нет.
Способ второй:
http://php.net/manual/en/function.mime-content-type.php
Не поддерживается и под Виндовс уже не работает. Разработчики рекомендуют использовать расширение Fileinfo из PECL.
Способ третий:
Использовать расширение Fileinfo из PECL. Не входит в стандартную поставку php. Я разрабатываю что-то вроде фрэймворка и построенные на нем приложения могут работать на чужих хостингах и я не могу требовать от клиентов, чтобы они требовали от хостера нестандартных расширений.
Способ четвертый:
Использовать программу "file" входящую в состав Linux. То же самое ограничение, что и в предыдущем случае.
Казалось бы, простая задача -- определить тип файла по его содержимому.
Может кто-нибудь знает стороннюю библиотеку в которой реализован механизм определения типа файла по его содержимому?
Спасибо.
Пользователь загружает файлы на сервер.
Загрузка асинхронная. (Пример смотрите на http://panoramio.com/)
В зависимости от содержимого, может применяться некая постобработка. Например, изменение размера для изображений, перекодирование для видео. Также попадаются "обычные" документы с которыми ничего делать не нужно. В последствии в зависимости от своего типа, файлы отображаются по разному: картинки отображаются как картинки, видео транслируется flash-плеером, а документы скачиваются. Также мне необходимо разрешить загружать на сервер файлы только определенных типов, ограничивая это "белым списком".
Требуется каким-то образом различать содержимое файлов.
Способ первый:
в массиве $_FILES смотреть какой mime type шлет обозреватель пользователя. Эти данные шлет клиент и доверять им не стоит. Более того, если в системе не установлен МС Офис, то обозреватель шлет application/data, что не верно. Более того, при постобработке этих данных просто нет.
Способ второй:
http://php.net/manual/en/function.mime-content-type.php
Не поддерживается и под Виндовс уже не работает. Разработчики рекомендуют использовать расширение Fileinfo из PECL.
Способ третий:
Использовать расширение Fileinfo из PECL. Не входит в стандартную поставку php. Я разрабатываю что-то вроде фрэймворка и построенные на нем приложения могут работать на чужих хостингах и я не могу требовать от клиентов, чтобы они требовали от хостера нестандартных расширений.
Способ четвертый:
Использовать программу "file" входящую в состав Linux. То же самое ограничение, что и в предыдущем случае.
Казалось бы, простая задача -- определить тип файла по его содержимому.
Может кто-нибудь знает стороннюю библиотеку в которой реализован механизм определения типа файла по его содержимому?
Спасибо.