Как узнать тип содержимого расширения? - PullRequest
1 голос
/ 27 февраля 2010

Где я могу узнать тип содержимого для определенного формата / расширения файла? Например, я знаю, что mp3 может быть одним из следующих типов контента:

'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'

Каким будет тип содержимого для zip-файла? Где мне найти эту информацию для других типов контента?

Мне это нужно для проверки с помощью ruby ​​на плагине рельсовой скрепки.

Спасибо!


Обновление: я только что нашел это и подумал, что это может быть полезно другим людям

1 Ответ

4 голосов
/ 27 февраля 2010

Я знаю, что mp3 может быть одним из следующих типов контента

Только audio/mpeg допустимо. Остальные фальшивые и вообще нигде не будут работать.

Каким будет тип содержимого для zip-файла?

application/zip.

Где я могу найти эту информацию для других типов контента?

Правильный список всех зарегистрированных типов носителей: в IANA . Конечно, есть еще много типов, которые не были зарегистрированы, в основном те, с префиксом x.

Если вы хотите на лету выяснить, что ваша машина думает, что конкретное расширение использует серверный скрипт, вы можете найти это в специфичном для ОС месте. В Windows информация о расширении / типе файла хранится в реестре. На настольном Linux он находится в /usr/share/mime. На веб-сервере Apache вы можете повторно использовать таблицу mime.types Apache.

для определенного формата / расширения файла?

Расширения файлов не соответствуют стандартам и не являются надежным способом проверки типа ресурса в Интернете, включая загрузку файла. Сопоставления между расширением файла и типом носителя - это проблема, связанная с ОС / установкой, поэтому вы не можете знать, какой тип носителя относится к расширению файла на другом компьютере. Кроме того, некоторые операционные системы даже не используют расширения файлов для определения типа (или используют их только как запасной вариант).

Даже просмотр Content-Type, поставляемого с загрузкой файла, малопригоден, поскольку он часто бывает неправильным из-за неправильной настройки на стороне клиента. Я предполагаю, что именно поэтому поддельные типы, такие как application/mp3, попали в список выше, потому что какое-то время один браузер где-то на плохо настроенном компьютере отправлял неправильный тип. Но браузеры всегда могут отправить любой старый неправильный тип ... вы также можете получить text/plain MP3.

Если вам нужно разрешить пользователю устанавливать определенный тип контента для загруженного ресурса, вам придется позволить ему выбрать его вручную. Конечно, вы можете использовать небольшой взлом скриптов, чтобы сделать полезные предположения, такие как «если он заканчивается на .jpeg, это вероятно a JPEG» и сделать этот выбор автоматически. Но в общем случае не совсем верно угадать тип из расширения, представленного пользователем.

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