Неизвестный тип файла MIME?
Должен ли я указывать тип MIME, если загруженный файл не имеет расширения? Другими словами, существует ли общий тип MIME по умолчанию?
Вы можете использовать application/octet-stream
для неизвестных типов.
В RFC 2046 говорится в разделе 4.5.1:
Подтип «октет-stream» используется для указания того, что тело содержит произвольные двоичные данные.
Ресурсы RFC:
Мы должны использовать RFC-7231 (HTTP / 1.1 Semantics and Content) в качестве ссылки вместо RFC-2046 (типы носителей), потому что вопрос был явно о HTTP Content-Type.
Также RFC-2046 четко не определяет неизвестные типы, но RFC-7231 делает.
Короткий ответ:
Не отправляйте MIME-тип для неизвестных данных.
Чтобы быть более понятным: не используйте заголовок Content-Type вообще.
Рекомендации:
RFC-7231
Протокол передачи гипертекста (HTTP / 1.1): семантика и контент
3.1.1.5. Тип содержимогоСЛЕДУЕТ СЛЕДУЕТ, что отправитель, который генерирует сообщение, содержащее тело полезной нагрузки
сгенерируйте поле заголовка Content-Type в этом сообщении, если только
предполагаемый тип носителя закрытого представления неизвестен
отправитель.
В этом разделе четко сказано, что вы должны его оставить, если вы этого не знаете. Он также сообщает, что приемник может предположить, что тип – это приложение / октет-stream, но дело в том, что это может быть и другое.
Что тогда изменилось?
RFC-2046
4.5.1. Подтип Octet-StreamРекомендуемое действие для реализации, которое получает
Объект «application / octet-stream» должен просто предложить поместить данные
в файле, при этом любое кодирование Content-Transfer-Encoding отменено или, возможно,
используйте его в качестве входных данных для указанного пользователем процесса.
И, как уже было сказано выше:
RFC-7231
3.1.1.5. Тип содержимогоЕсли поле заголовка Content-Type отсутствует, получатель МОЖЕТ либо предположить тип медиафайла «application / octet-stream»,
([RFC2046], раздел 4.5.1) или изучить данные для определения его типа.
Вывод:
Если вы определяете его как «приложение / октет-stream», вы сообщаете, что знаете, что это «приложение / октет-stream».
Если вы не определяете его, то вы говорите, что не знаете, что это такое, и оставляйте решение для получателя и получателя, чтобы он мог проверить, идет ли он, как утка и …
Я предпочитаю application/unknown
, но результат будет точно таким же, как application/octet-stream