【问题标题】:Classic ASP Content-type XLS Chrome downloads as .asp file for some users对于某些用户,经典 ASP 内容类型 XLS Chrome 下载为 .asp 文件
【发布时间】:2012-07-22 23:38:12
【问题描述】:

我有一个经典的 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) 的开发机器。但是,我的 QA 人员报告说,在网站上的几个特定报告中,它总是使用实际代码页名称 ReportFileName.asp 在 Chrome 上下载,然后他收到有关 .asp 文件没有文件关联的 Windows 错误。如果他确实选择了用 Excel 打开,则说明已下载了正确的文件。我让我们办公室的另一个人下载Chrome,她没有问题;文件下载为 {filename}.xls 并正常打开。

我很困惑,因为对于 QA 人员来说,它只影响这一份报告,这表明问题出在特定报告中。但是,其他两个使用相同版本 Chrome 的用户没有遇到此问题这一事实表明这是他的 Chrome 设置中的问题。

我没有任何运气在谷歌上搜索解决方案或搜索 SO,所以我想我会把问题抛到那里,看看是否有人有任何想法。

非常感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    我建议流式传输文件,这也可以让您以更好的方式处理大文件。

    这是我的工作示例,我使用它来获取一些自动 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
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多