2008-10-09 52 views
16

我需要将文件流式传输到Response以保存在最终用户的机器上。该文件是纯文本,所以我可以使用哪些内容类型来防止文本在浏览器中显示?什么内容类型强制下载文字回复?

+0

相关阅读:[我需要的内容类型:应用程序/八位字节流的文件下载? ](http://stackoverflow.com/q/20508788/95735) – 2016-01-30 20:24:11

回答

21

为了安全起见,确保在所有浏览器一致的行为,它通常是更好地使用这两种:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"My Text File.txt\" 
6

我不认为它的工作方式。

使用Content-Disposition: attachment表头,但坚持正确的内容类型。

+0

只有当User-Agent是Internet Explorer 6时才发送`Content-Type:application/octet-stream` ... – 2014-06-18 09:52:38

23

在大多数情况下,下面应该工作:

Content-type: application/octet-stream 
Content-Disposition: attachment; filename="myfile.txt" 

有浏览器,它仍然显示为文本文件的一些边缘的情况下,但没有主流浏览器会(我说的嵌入在某些MID中的浏览器)。


编辑:当这个答案最初发表,发送MIME类型application/octet-stream是引起一些浏览器下载的唯一可靠方法。现在在2016年,如果您不需要支持古老的浏览器,则可以安全地指定适当的MIME类型。

+0

您是否需要说谎内容-类型?如果你可以使用Content-Disposition,它应该更好,它应该工作。 – 2008-10-09 11:55:46

+0

根据我的经验,application/octet-stream使得它可以在所有浏览器中更可靠地工作。 – ceejayoz 2008-10-09 12:01:57