对于某些用户,经典 ASP 内容类型 XLS Chrome 下载为 .asp 文件
Posted
技术标签:
【中文标题】对于某些用户,经典 ASP 内容类型 XLS Chrome 下载为 .asp 文件【英文标题】:Classic ASP Content-type XLS Chrome downloads as .asp file for some users 【发布时间】: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,所以我想我会把问题抛到那里,看看是否有人有任何想法。
非常感谢您的帮助。
【问题讨论】:
【参考方案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
希望这会有所帮助!
【讨论】:
以上是关于对于某些用户,经典 ASP 内容类型 XLS Chrome 下载为 .asp 文件的主要内容,如果未能解决你的问题,请参考以下文章
更新 Excel 工作表(在经典 ASP/Vbscript 中)