我有一个由我的网站(ASP.NET)中的按钮启动的动态生成的文件。
输出直接写在Response中,因为我无法在服务器中创建临时文件(同样,它们会发生冲突,因为所有请求的文件名都相同,但内容根据其他一些数据而有所不同在页面上。)
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,那么如果每个人的文件名都相同,你会如何建议解决方案,但每个文件的内容应该是分开的(因为它们不同)请求?
谢谢。
答案 0 :(得分:3)
Content-Disposition后有两个冒号。我猜你添加了内容处理标题:
Response.Headers.Add("Content-Disposition:", "attachment; filename=test.xls")
增加了额外的冒号。