Есть ли полный список mime-типов / заголовков? - PullRequest
1 голос
/ 09 ноября 2011

Полагаю, я хочу в конечном итоге создать сценарий, который в некотором смысле заставит браузер запрашивать загрузку, а не переходить непосредственно к файлу, и я хочу сделать это на основе записей в БД, поэтому его немного запутывают немного больше. Моя проблема в том, что я могу найти только MIME-тип или 2, чтобы работать с ними, но я хочу справедливую стоимость акций. От doc до pdf, от mp3 до avi. Мой скрипт будет работать на основе расширений файлов, а затем выводить правильный заголовок, просто нужно знать, какой заголовок вывести с каким типом файла. Есть ли по умолчанию общий список типов файлов, которые можно передавать или открывать в браузере?

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Расширения файлов не совсем надежный способ определения типа файла.Вы могли бы быть заинтересованы в предположении MIME.Если ваше приложение размещено в Linux, вы можете воспользоваться инструментом командной строки file с параметром -i:

// Use escapeshellarg() to inject arbitrary file paths
$content_type = `file -i /path/to/file`;

В противном случае PHP имеет расширение PECL под названием Fileinfo .

Если вы хотите придерживаться расширений файлов, типы носителей утверждены IANA .

Обновление: Fileinfo isродное расширение начиная с PHP / 5.3.0 (поэтому нет необходимости устанавливать стороннее приложение).Пример использования:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($finfo, '/path/to/file');
finfo_close($finfo);
1 голос
/ 09 ноября 2011

Слишком долго для комментария.Поэтому я поставил это как ответ.

Тестирование поддержки типов MIME

Firebug можно использовать для проверки того, какие заголовки Apache возвращает для разных типов изображений и фильмов.Для этого просто попробуйте загрузить нужный файл в HTML.Откройте Firebug и перейдите в «Сеть» -> «Заголовки» -> «Заголовки ответа».Тип контента должен появиться там.Если Apache не распознает изображение / фильм, он, скорее всего, будет возвращен как «текст / обычный».Если Apache распознает ресурс, вы должны увидеть правильный тип MIME, например, «video / webm».Обратите внимание, что если вы видите «304 Не изменено» рядом с состоянием запроса, то ресурс извлекается из кэша, и заголовки HTTP могут не отражать какие-либо изменения, внесенные вами в конфигурацию Apache.Вы можете использовать «Control + F5», чтобы заставить Firefox повторно извлекать все кэшированные элементы.

Из приведенной выше подсказки вы можете проверить ответ типа контента с веб-сервера, проанализировав ответ сервера.Если возвращается text/plain, это означает, что MIME не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...