如果上传的文件没有扩展名,我是否必须指定MIME类型?换句话说,是否有默认的常规MIME类型?
如果上传的文件没有扩展名,我是否必须指定MIME类型?换句话说,是否有默认的常规MIME类型?
Answers:
application/octet-stream
文件是可执行文件。即使浏览器在有意下载可执行文件的情况下,也不会在用户未要求的情况下“可能执行”该文件。仅下载可执行文件并不意味着我希望它立即执行。如果确实有一个浏览器可以application/octet-stream
在下载时自动执行文件,请告诉我们该浏览器以及如何重现该行为。现在我不相信你。
我们应该使用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头字段,除非 发送者
不知道所表示的预期媒体类型
。
该部分清楚地告诉您,如果您不确定它,则将其省略。它还告诉接收者可以假定类型为应用程序/八位字节流,但事实也可能是其他类型。
RFC-2046
4.5.1。八位字节流子类型对于接收
“应用程序/八位字节流”实体的实现,建议采取的措施是简单地提供将数据
放入文件中,而无需进行任何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
application/octet-stream
或application/unknown
?他们发明的理由是image/png
。