如果上传的文件没有扩展名,我是否必须指定 MIME 类型?换句话说,是否有默认的通用 MIME 类型?
3 回答
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”。
如果您不定义它,那么您就是在告诉您不知道它是什么,然后将决定留给接收者,然后接收者可以检查它是否像鸭子一样走路并且...
我更喜欢application/unknown
,但结果肯定是一样的application/octet-stream