>我有一个动态生成的文件,由我的网站(ASP.NET)中的按钮启动。
输出直接写入响应中,因为我无法在服务器中创建临时文件(此外,它们会冲突,因为所有请求的文件名都相同,但内容根据页面上的其他一些数据而有所不同)。
在IE中一切正常。在Chrome中,它没有。Chrome 使用网页名称(假设默认.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,鉴于文件名对每个人都相同,但每个请求的内容应该是分开的(因为它们不同),您将如何建议解决方案?
谢谢。
Content-Disposition 后面有两个冒号。我猜你像这样添加了内容处置标题:
Response.Headers.Add("Content-Disposition:", "attachment; filename=test.xls")
这增加了一个额外的冒号。