经典ASP内容类型XLS Chrome下载为某些用户的.asp文件

时间:2012-07-24 15:42:20

标签: google-chrome asp-classic mime-types xls

我有一个经典的asp网站,它包括将表数据导出/下载为excel文件(.xls)的功能。这是通过将用户重定向到一个新页面来完成的,这个代码块代替了通常的HTML标题:

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设置中的内容。

我没有任何运气谷歌搜索解决方案或搜索SO所以我想我会把问题扔出去,看看是否有人有任何想法。

非常感谢您的协助。

1 个答案:

答案 0 :(得分:0)

我建议流式传输文件,这样你就可以更好地处理大文件了。

这是我的工作示例,我使用它来获取一些存储在一个相当不友好的文件名中的自动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

希望这有帮助!