【问题标题】:HTTP header Content Disposition filename not being respected未遵守 HTTP 标头内容处置文件名
【发布时间】:2014-12-11 17:34:24
【问题描述】:

我有一个由我的网站 (ASP.NET) 中的按钮启动的动态生成文件。

输出直接写在响应中,因为我无法在服务器中创建临时文件(此外,它们会发生冲突,因为所有请求的文件名都相同,但内容会根据服务器上的其他一些数据而有所不同页)。

在 IE 中一切正常。 在 Chrome 中,它没有。 Chrome 使用页面名称(假设为 Default.aspx)作为文件名,而不管 HTTP 标头中的内容。

HTTP 标头是:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/vnd.ms-excel
Expires: -1
Server: Microsoft-IIS/8.0
Content-Disposition: : attachment; filename=test.xls
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcSWdvci5SaWJlaXJvXERvY3VtZW50c1xURlNcRXN0aW1hdGVzIGFuZCBQcm9qZWN0aW9uc1xXZWJzaXRlXFBFUFdlYlNpdGVcRGF0YVF1ZXJ5XERlZmF1bHQuYXNweA==?=
X-Powered-By: ASP.NET
Date: Thu, 11 Dec 2014 17:05:19 GMT

关于如何强制 Chrome 使用指定的文件名而不是页面名称的任何解决方案?

如果唯一的选择是将用户重定向到带有文件名的 URL,鉴于每个人的文件名都相同,但每个人的内容应该是分开的(因为它们不同),你会如何建议解决方案请求?

谢谢。

【问题讨论】:

    标签: asp.net google-chrome http-headers content-disposition


    【解决方案1】:

    Content-Disposition 后面有两个冒号。我猜你像这样添加了 content-disposition 标头:

    Response.Headers.Add("Content-Disposition:", "attachment; filename=test.xls")

    增加一个额外的冒号。

    【讨论】:

    • 有时我们只是想太多而没有看到问题是如此之小:D。非常感谢你。这解决了问题。
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 2020-06-29
    • 2010-10-30
    • 1970-01-01
    • 2020-04-28
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多