为什么需要MIMEtypes才能通过扩展名识别文件types?

如果人们的计算机可以根据扩展名(.pdf,.mp3,.docx,.dotx等)决定如何处理文件,为什么Web服务器和电子邮件应用程序也需要指定MIMEtypes?

如果您想以不同于默认文件的方式传递文件(例如,以纯文本格式显示.py或.html文件),或者文件扩展名在客户端计算机上未注册,但在大多数情况下例如,如果我正在创build一个新的文件格式(比如.foobaz),并希望使用户能够通过networking和电子邮件共享这些文件,那么是否仅仅依靠客户端来识别文件扩展名呢?

MIMEtypes明确指定了文件的预期用途。 文件扩展名仅提示内容。 两者都可能是错的。 许多文本编辑器已经使用DOC来处理各种内部文件格式。

伪造扩展广泛用于误导人们作为文件types。 这可以用于各种恶意软件。 它也可能导致安全漏洞。 如果将myfile.txt作为文本文件进行安全性validation,稍后内容检查将作为可执行文件运行,那么最终可能会感染受感染的机器。

Unix使用可执行位来指示哪个文件可以运行。 脚本可以从爆炸path开始,指示哪个解释器应该执行它们。 文件命令可以用来相当可靠地确定带或不带扩展名的文件types。

使用扩展名来标识哪个文件的使用可能会导致歧义。 如果我有myfile.exe,myfile.com,myfile.bat和myfile.cmd,运行命令myfile时会运行。

你看错了方向。

一个文件需要一个MIMEtypes,所以客户端知道如何处理文件。

你的问题也应该反过来:

为什么我们需要文件扩展名,如果我们可以通过MIMEtypes识别文件types?

答案可能会使人们更容易通过查看名称来识别文件的types。 在Windows上可能有其他原因。

这只发生在UNIX世界的Windows世界文件不必有一个扩展名,他们是由MIMEtypes标识。

由于小型定制(定制devise)的应用程序往往对其文件扩展名比较自由。 这可能会导致文件扩展名用于表示多种types的文件。

由于不能保证文件扩展名与给定types的文件相对应,接收者可能无法识别文件的types,并且将无法获得正确的程序来打开它。

除MIMEtypes之外,还有其他系统来识别文件,例如Magic Numbers。 这意味着不需要文件扩展名。 文件扩展名也可以由不能打开文件的用户重命名,这意味着他们可能会联系支持。

因为用户是愚蠢的,所有的时间重命名文件。 您不能相信要正确命名的文件名。 我仍然惊讶于将someFile.xltm重命名为someFile.xls的人数,然后想知道为什么他们的电子表格模板不起作用。 MS使用文件名来确定内容types是一个懒惰的弱点和安全隐患。