方法三已经测试可以!

方法一:

  <%
Response.ContentType = "application/octet-stream "
Response.AddHeader "Content-Disposition ", "attachment; filename=xx.Excel "
response.binarywrite getBinaryFile( "c:/xxxxx/xx.Excel ")
function getBinaryFile(fileSpec)
Dim adTypeBinary
adTypeBinary = 1
Dim oStream
set oStream = server.createobject( "ADODB.Stream ")
oStream.Open
oStream.Type = adTypeBinary
oStream.LoadFromFile fileSpec
getBinaryFile= oStream.read
set oStream=nothing
end function
%>
  方法二:直接让客户端浏览器下载已知类型的文件
Web开发人员都有过这样的疑问,如何让一个文件,尤其是一个已知类型的文件,发送到客户端,直接提示让浏览者下载,而不是用与它相关联的程序打开。以前我们最常用的办法就是把这样的文件加到链接上,这样可以让浏览者通过点击鼠标右键的目标另存为来下载所链接的文件。但是,这样有两个不足的地方:
一是:如果浏览器能够识别已下载文件的扩展名,则浏览器就会激活该扩展名所关联的程序来打开所下载的文件。比如:在Windows平台上,如果用户点击的链接链接的是一个“.doc”文件的话,那么,浏览器就会启动Microsoft Word应用程序来打开它。
二是:如果采用链接的办法的话,任何能看到该链接的人都可以下载该文件,你虽然也可以对所下载的文件进行权限设置,但那样做也不是很方便的。有时候我们需要更为灵活和富有弹性的方式,下面的程序能够很方便地克服以上两方面的不足。
这种办法是可靠的,但你必须记住:没有授权的用户不能够通过在浏览器地址栏里输入文件的URL来取得该文件的下载权。所以,要下载的文件应该放到虚拟目录之外的一个目录里,比如:如果你的虚拟目录是C:/Mengxianhui/Tomcat4/Website/MyApp的话,那么,存放在该目录和该目录下的任何子目录下所有文件对因特网上的任何用户都是可见的。要直接下载一个文件,我们需要做两件事,第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关。第二件事是:设置HTTP的响应头名字为:Content-Disposition,设定值为:attachment; filename = theFileName。这里的theFileName就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。下面,我们就平常最常用的JSP和ASP页面来举一个实际应用的例子。
TestFileDownload.JSP页面的例子:
<%
// 得到文件名字和路径
String filename = "MengxianhuiDocTest.doc ";
String filepath = "D:// ";

// 设置响应头和下载保存的文件名
response.setContentType( "APPLICATION/OCTET-STREAM ");
response.setHeader( "Content-Disposition ",
"attachment; filename=/ " " + filename + "/ " ");

// 打开指定文件的流信息
java.io.FileInputStream fileInputStream =
new java.io.FileInputStream(filepath + filename);

// 写出流信息
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
%>
值得注意的是:在要下载的文件内容里,除了文件的内容之外,不应该再附加有其它任何的字符,包括空格和回车换行符。我们有时在编写代码的时候,为了使代码清晰可读,往往会添加一些空格、制表符或者回车换行符,这样虽然看起来比较清晰,但有时可能会得不到正确的结果。比如:
<%@ page import= "java.io.* "
%> <jsp:useBean id= "MyBeanFromMengxianhui " scope= "page "
class= "com.Mengxianhui.DownloadBean " />
应该写成这样:
<%@ page import= "java.io.* "
%> <jsp:useBean id= "MyBeanFromMengxianhui " scope= "page "
class= "com.Mengxianhui.DownloadBean " />
TestFileDownload.ASP页面的例子:
在ASP里,没有提供从文件读取文件流信息的方法,因此,为了得到文件的流信息,我们必须借助其他的工具,最简单的就是编写一个VB或C的DLL组件,让组件返回文件的流信息。下面是一个用VB编写的DLL的例子,工程名字为MengXHFileDownLoad,类模块的名字为BinReadFromFile,类方法readBinFromFile如下:
Function readBinFromFile(ByVal bfilename As String) As Variant
Dim fl As Long
Dim FileNum As Long
Dim binbyte() As Byte
Dim binfilestr As String
On Error GoTo errHandler
FileNum = FreeFile
Open bfilename For Binary As #FileNum
fl = FileLen(bfilename)
ReDim binbyte(fl)
Get #FileNum, , binbyte
Close #FileNum
readBinFromFile = binbyte
Exit Function
errHandler:
Exit Function
End Function
把上面的代码编译成MengXHFileDownLoad.DLL,然后注册即可使用。下面以直接下载一个When A Man Loves A Woman.mp3的MP3文件为例子,我们要编写的ASP脚本代码如下:
<%@ Language=VBScript %>
<%
Response.buffer = TRUE
Response.ContentType = "APPLICATION/OCTET-STREAM "
Response.AddHeader "Content-Disposition ", "attachment;filename=When A Man Loves A Woman.mp3 "
Dim varStream, oMyObject
Set oMyObject = Server.CreateObject( "MengXHFileDownLoad.BinReadFromFile ")
varStream = oMyObject.readBinFromFile( "E:/MengXianhui/Mp3/When A Man Loves A Woman.mp3 ")
Response.BinaryWrite(varStream)
Set oMyObject = Nothing

Response.End
%>

当运行上面的TestFileDownload.ASP文件时,浏览器会弹出一个文件下载的对话框,提示我们下载,而不是用默认的MP3播放器打开。
这种方法也可以把我们的ASP页面生成的HTML源代码保存成一个文件,下面的代码会提示你把ASP执行的结果保存成Test.htm文件。具体的方法是:
<%
Response.ContentType = "APPLICATION/OCTET-STREAM "
Response.AddHeader "Content-Disposition ", "attachment;filename=Test.htm "
Response.write " <div style= 'background-color:navy;color:#FFFFFF '> 测试 </div> "
Response.write " <a href= 'http://lucky.myrice.com '> "
Response.write " <img src= 'http://lucky.myrice.com/back.jpg '> 【孟宪会之精彩世界】 </a> "
Response.End
%>

当文件数目很少时,也可以直接在服务器端进行设置,让这些文件直接下载。具体做法是:在Internet服务管理器里,选“属性”项,然后选“HTTP Headers”标签页进行设置即可!!

  方法三:用JS直接操作
function DownURL(strRemoteURL,strLocalURL)
{
try
{
var xmlHTTP=new ActiveXObject( "Microsoft.XMLHTTP ");
xmlHTTP.open( "Get ",strRemoteURL,false);
xmlHTTP.send();
var adodbStream=new ActiveXObject( "ADODB.Stream ");
adodbStream.Type=1;//1=adTypeBinary
adodbStream.Open();
adodbStream.write(xmlHTTP.responseBody);
adodbStream.SaveToFile(strLocalURL,2);
adodbStream.Close();
adodbStream=null;
xmlHTTP=null;
//OpenFile(strLocalURL);
}
catch(e)
{
window.confirm( "下载URL出错! ");
}
//window.confirm( "下载完成. ");
}

让ie浏览器下载word,excel,而不是直接打开相关推荐

  1. 浏览器下载的excel文件损坏无法打开

    浏览器下载的excel文件损坏无法打开 excel无法打开的问题,解决方式 将控制层的方法设置为void类型即可

  2. 奇安信浏览器下载word和excel失败 环境不适配问题

    @奇安信浏览器下载word和excel失败 环境不适配问题 奇安信浏览器下载word和excel失败 环境不适配问题 给政府工作要求使用信创环境,要求适配奇安信可信浏览器.其他功能都好使,只有在测试下 ...

  3. Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码

    1.遇到的问题 谷歌和ie下载文件正常 Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为test.doc.html,手动去掉多余的后缀.html即可正 ...

  4. 使用文件流的形式在浏览器下载word文档

    一.使用文件流的形式在浏览器下载word文档 String path = "http://172.16.228.130:7300/document/d9dd1ec7e72d4fc6a9e50 ...

  5. Chrome浏览器下载Word、Excel、PPT,打开提示错误问题

    子丰最近刚开始使用chrome浏览器,但是从网页.文库或者邮件等地方下载Word.Excel和PPT后,打开总是提示错误.        Word和Excel还是可以打开看里面的内容,只是会提示&qu ...

  6. 避免下载Word/Excel文件时被IE开启

    当我们通过Web页下载一个远程文件的时候,我们可以选择保存被下载文件,也可以选择直接打开被下载的文件.如果我们选择"Open",有的时候该文件会被已关联的程序以OLE方式开启在IE ...

  7. 控制Word/Excel在IE中打开,还是下载

    经常在下载Word文件时,总是在IE中打开,很不习惯,让用户也觉得很困惑,花了好长时间,终于找到了相关代码,其实很简单.会者不难,难者不会. <%@ page contentType=" ...

  8. vue,React中利用的axios进行下载word,excel,pdf 常见的问题

    /* 下载方法 */ function downFile(blob, fileName) { if (window.navigator.msSaveOrOpenBlob) { navigator.ms ...

  9. 如何让IE浏览器提示下载文件,而不是直接打开Excel文件

    http://hi.baidu.com/yaoyaopijia/blog/item/5539a22f2e2e9d594ec2266d.html http://www.blogjava.net/wang ...

最新文章

  1. Java异常信息处理类
  2. matlab在绘图区加格栅,实验二(2) MATLAB绘图
  3. python【力扣LeetCode算法题库】8-字符串转换整数 (atoi)
  4. windows符号服务器地址
  5. 2003 cant connect to MySQL server on 'XXX.XXX.XXX.XXX'
  6. 对USB驱动程序的理解(1)
  7. nn.Conv2d的解释
  8. 【英语学习】【English L06】U07 Jobs L6 I love what I do
  9. Oracle数据库日期格式转换操作
  10. d语言 c++ 混合编程,C++,D语言,Python语言一次模拟合作开发
  11. 哈工大学习笔记 | 图文并茂详解隐马尔可夫模型
  12. 一天入门Tableau详细教程(上)
  13. matlab 如何使用虚数,编程高手帮我解决下怎么用matlab解含有虚数的微分方程组...
  14. juqery addClass方法失效问题
  15. 基于G6-Editor的流程图编辑器
  16. Java的抗辩本位制
  17. model trainning 模型训练
  18. 跨平台web app教育设备的一些设计标准
  19. 数说热点 | 跟着《长月烬明》起飞,今年各地文旅主打的就是一个听劝
  20. 罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示

热门文章

  1. 鸟哥Linux学习之——数据流重定向
  2. springboot集成MQTT协议实现消息实时推送(未实现版)
  3. pycharm配置python2.7.6环境_pycharm如何配置python环境
  4. VisionMaster 4.0.0 的Modbus通信
  5. 哈工大18年春软件构造课程讨论题
  6. C语言/Python经典算法冒泡排序
  7. 通俗讲解:什么是Web
  8. 第七届全球云计算大会-中国站9月宁波举办
  9. Linux编程signal函数使用
  10. ffmpeg的中文文档(二)