Oje*_*jen 5 browser rendering ascii file download
首先我要说的是,我知道您可以在标头中指定内容处置并使用“附件”或“内联”,而这个问题与此无关(至少不是直接)。
我有一个扩展名为 .txt 的文件。我注意到不同的浏览器行为取决于该 .txt 文件的内容。如果我的文件包含字母数字字符,并且我将文件的位置粘贴到(例如)Chrome 的 URL 栏中,则该文件会在浏览器中打开。
如果我的文件包含“SI”字符,则会下载该文件而不是在浏览器中打开该文件。
起初我认为这可能是因为“SI”是控制代码,但“CR”和“LF”也是控制代码,当它们存在时文件会显示在浏览器中。当 .txt 文件中存在“DC2”字符时,该文件甚至会在 Chrome 中打开。
我的问题是:在文件内容级别,什么决定文件是否显示或下载?
(我意识到这可能会因浏览器的不同而有所不同,但如果有一些至少在某种程度上可靠的东西,那么了解一下会很有帮助)
提前致谢。
编辑(基于山姆的回答):
当“SI”或“DC2”字符位于文本文件的前 1000 个左右字符中时,将下载该文件;如果这些字符位于前 1000 个左右字符之后,则文件将显示在浏览器中。
当您向浏览器发送文件时,浏览器的行为将基于服务器发送的内容类型标头。如果您自己没有明确设置,您的网络服务器可能会尝试根据文件的前几个字节进行最佳猜测。
请参阅http://httpd.apache.org/docs/2.2/mod/mod_mime_magic.html