如何在不强制saveas对话框的情况下设置响应文件名

Hug*_*lma 110 http httpresponse httpwebresponse content-disposition http-headers

我在一些响应中返回一个流,设置适当的内容类型标题.我正在寻找的行为是这样的:

  • 如果浏览器能够呈现给定内容类型的内容,那么它应该在浏览器窗口中显示它.

  • 如果浏览器不知道如何呈现内容,那么它应该显示saveas对话框,其中文件名应该是响应中提供的文件名.

如果我使用以下内容设置Content-Disposition标头的问题:

"attachment; filename ="myfile.txt""

浏览器将始终显示"保存"对话框.

如果我没有设置Content-Disposition,则saveas对话框中使用的文件名是url中的文件名,在我的情况下不起作用.

我也尝试将Content-Disposition设置为内联,但结果是一样的.

Pat*_*nza 161

正确的方法可能是:

Content-Disposition: inline; filename="myfile.txt"

  • 当你写这个答案时,我不确定你的意思是什么,并没有得到广泛的支持,并且希望你给出了很多事实而不是FUD.我刚刚在IE 6,IE 8,现代Chrome和现代Firefox中进行了测试,它可以在所有这些中运行; 据我所知,现在使用它是完全安全的. (7认同)
  • 实际上它在Firefox 37.0.2和IE 11.0.18(刚刚测试过)中都有效.您可能正在使用内容类型,您的浏览器无法内嵌显示. (2认同)
  • http://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http 上的各种讨论也涵盖了一些注释 - 如果有空格在文件名中,您需要在文件名周围使用双引号 (`"`)。如果您的文件名中包含非 ASCII 字符,您应该查看其他问题来讨论如何操作。 (2认同)