Неизвестный тип файла MIME?

Должен ли я указывать тип MIME, если загруженный файл не имеет расширения? Другими словами, существует ли общий тип MIME по умолчанию?

Ответ 1

Вы можете использовать application/octet-stream для неизвестных типов.

RFC 2046 говорится в разделе 4.5.1:

Подтип "октет-поток" используется для указывают, что тело содержит произвольные двоичные данные.

Ответ 2

Ресурсы 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

Отправитель, который генерирует сообщение, содержащее тело полезной нагрузки, ДОЛЖНО
сгенерируйте поле заголовка Content-Type в этом сообщении, если только предназначенный тип носителя закрытого представления неизвестен отправитель.

В этом разделе четко сказано, что вы должны оставить его, если вы не знаете его точно. Он также сообщает, что приемник может предположить, что тип - это приложение/октет-поток, но дело в том, что оно может быть и другим.

Чем отличается?

RFC-2046
4.5.1. Подтип Octet-Stream

Рекомендуемое действие для реализации, которое получает Объект "application/octet-stream" должен просто предложить поместить данные
в файле, при этом любое кодирование Content-Transfer-Encoding отменено или, возможно, использовать его в качестве входных данных для указанного пользователем процесса.

И, как уже было сказано выше:

RFC-7231
3.1.1.5. Content-Type

Если поле заголовка Content-Type отсутствует, получатель МОЖЕТ либо предположить, что тип медиафайла "application/octet-stream"
([RFC2046], раздел 4.5.1) или проанализировать данные для определения его типа.

Вывод:

Если вы определяете его как "приложение/октет-поток", вы сообщаете, что знаете, что это "приложение/октет-поток".

Если вы не определяете его, то вы говорите, что не знаете, что это такое, и оставляйте решение для получателя и получателя, чтобы он мог проверить, идет ли он как утка и...

Ответ 3

Я предпочитаю application/unknown, но результат будет точно таким же, как application/octet-stream