156

如果上传的文件没有扩展名,我是否必须指定 MIME 类型?换句话说,是否有默认的通用 MIME 类型?

4

3 回答 3

200

您可以application/octet-stream用于未知类型。

RFC 2046在第 4.5.1 节中指出:

“八位字节流”子类型用于指示主体包含任意二进制数据。

于 2009-07-24T06:27:32.840 回答
50

RFC 资源:

我们应该使用 RFC-7231(HTTP/1.1 语义和内容)而不是 RFC-2046(媒体类型)作为参考,因为问题显然是关于 HTTP Content-Type。

RFC-2046 也没有明确定义未知类型,但 RFC-7231 有。

简短的回答:

不要为未知数据发送 MIME 类型。
更清楚一点:根本不要使用 Content-Type 标头。

参考:

RFC-7231
超文本传输​​协议 (HTTP/1.1):语义和内容
3.1.1.5。内容类型

生成包含有效负载主体的消息的发送者应该
在该消息中生成 Content-Type 头字段,除非发送者
不知道封闭表示的预期媒体类型

该部分清楚地告诉您,如果您不确定,请忽略它。它还告诉接收者可以假设类型是 application/octet-stream 但事情是它也可能是其他东西。

那有什么不同呢?

RFC-2046
4.5.1。八位流子类型


对于接收“application/octet-stream”实体的实现,推荐的操作是简单地将数据
放入文件中,取消任何 Content-Transfer-Encoding,或者将
其用作用户指定的输入过程。

而且,如上所述:

RFC-7231
3.1.1.5。内容类型

如果 Content-Type 头字段不存在,接收者可以假设媒体类型为“application/octet-stream”
([RFC2046],第 4.5.1 节)或检查数据以确定其类型。

结论:

如果您将其定义为“application/octet-stream”,那么您就是在告诉您知道它是“application/octet-stream”。

如果您不定义它,那么您就是在告诉您不知道它是什么,然后将决定留给接收者,然后接收者可以检查它是否像鸭子一样走路并且...

于 2015-02-21T22:53:14.283 回答
15

我更喜欢application/unknown,但结果肯定是一样的application/octet-stream

于 2011-05-21T08:57:29.923 回答