经典ASP内容类型XLS Chrome下载为某些用户的.asp文件
问题描述:
我有一个经典的asp网站,其中包括将表格数据导出/下载为excel文件(.xls)的功能。这是通过代替通常的HTML头将用户重定向到与这个代码块的新页面进行:经典ASP内容类型XLS Chrome下载为某些用户的.asp文件
sub PutInTopOfXLS(FileName)
Response.Buffer = TRUE
Response.CharSet="UTF-8"
Response.CodePage=65001
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename=" & FileName%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
<!--table
br {mso-data-placement:same-cell;}
tr {vertical-align:top;}
-->
</style>
</head>
<body>
<%end sub
能正常工作的所有用户(或至少没有问题的报告)在Firefox, Internet Explorer和Safari(适用于Mac和Windows),它适用于使用Chrome(20.0.1132.57)的开发计算机。但是,我的质量检查人员报告说,在网站上的几个特定报告中,它始终在Chrome上下载实际代码页名称ReportFileName.asp,然后得到一个关于.asp文件没有文件关联的Windows错误。如果他实际选择了使用Excel打开,则下载了正确的文件。我问我们办公室的另一个人下载Chrome,她没有问题;该文件下载为{filename} .xls并正常打开。
我很困惑,因为对于质量保证人员来说,只影响这一份报告就会表明问题出在具体的报告中。但是,其他两位使用相同版本Chrome的用户并没有遇到问题,这表明这是Chrome设置中的一些内容。
我没有任何运气谷歌搜索解决方案或搜索所以我想我会抛出这个问题,看看有没有人有任何想法。
非常感谢您的协助。
答
我建议流式传输文件,这将允许您以更好的方式处理大型文件。
这是我的工作的例子,我用这个去接其存储在一个相当不友好的文件名一些自动化的CSV文件,我也使用这个脚本提出一个更好的文件名到最终用户:
' Set some variables
strSourceFilename = "00008446.dat"
strNiceFilename = "Nice Name Here.csv"
' Read the file and stream it back to the client
Const adTypeBinary = 1
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeBinary
BinaryStream.Open
BinaryStream.LoadFromFile "C:\path\to\the\folder\" & strSourceFilename
ReadBinaryFile = BinaryStream.Read
Response.ContentType = "application/x-unknown"
Response.AddHeader "Content-Disposition", "attachment; filename=" & strNiceFilename
Response.BinaryWrite ReadBinaryFile
希望这有助于!