Должен ли я указывать тип 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