内容分发:什么是“inline”和“attachment”的区别?

284

这些东西有什么区别:

Response.AddHeader("Content-Disposition", "attachment;filename=somefile.ext")

Response.AddHeader("Content-Disposition", "inline;filename=somefile.ext")

我不知道它们之间的区别,因为当我使用其中一个时,我总是会收到一个窗口提示,让我下载两者的文件。我阅读了规格说明,但一无所获。


3
当处置类型为inline时,通常不会有文件名。 - james.garriss
3
仅供大家参考:文件名仍然可以通过内联设置,尽管这不是标准做法。Chrome、Firefox、IE和Opera都会遵守文件名,但Edge不会(2018年)。 - bugybunny
有没有人知道一个类似于 caniuse 用于 CSS 的资源,可以展示各种浏览器对 Content-Type 的处理情况? - jmoreno
https://superuser.com/q/1277819/69300 - Alexan
1
你只是想查看你的处置状态吗? - HoldOffHunger
3个回答

329
由于我使用其中一个时,会弹出窗口提示要下载两个文件,这取决于浏览器和您试图提供的文件。使用inline(内联)方式,浏览器会尝试在浏览器内部打开文件。 例如,如果您有一个PDF文件和Firefox / Adobe Reader,则内联方式将在Firefox中打开PDF,而attachment方式将强制其下载。
如果您正在提供ZIP文件,则浏览器无法以内联方式显示它,因此对于内联和attachment方式,该文件将被下载。

14
只需要快速纠正一下:这种行为有时与移动设备上的情况不同。许多应用程序的 Web 视图会忽略附件的处理方式,如果能正确识别内容类型,则会在浏览器中渲染它。 - mixdev

35

如果它是内嵌的,浏览器应尝试在浏览器窗口内呈现它。 如果无法呈现,则会启动外部程序并提示用户。

对于附件,它将立即发送给用户,不管它是否可以在浏览器中加载。


12
这里也值得一提,inline会尝试直接从服务器打开Office文档(如xls、doc等),这可能会导致用户凭据提示。
请参见此链接:

http://forums.asp.net/t/1885657.aspx/1?Access+the+SSRS+Report+in+excel+format+on+server

有人试图通过ASP.Net从SSRS发送Excel报告,用户总是被提示输入凭据。在提示上单击取消后,它仍然会被打开... 如果内容配置为附件,则在单击打开后将自动保存到临时文件夹中,然后从本地副本中打开Excel。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接