excel文件不提示下载,而是在浏览器中打开?

小雯子 2024-05-11 03:08:07
最佳回答
方法一:  <%response.contenttype = "application/octet-stream "response.addheader "content-d**position ", "attachment; filename=xx.excel "response.binarywrite getbinaryfile( "c:/xxxxx/xx.excel ")function getbinaryfile(filespec)dim adtypebinaryadtypebinary = 1dim ostreamset ostream = server.createobject( "adodb.stream ")ostream.openostream.type = adtypebinaryostream.loadfromfile filespecgetbinaryfile= ostream.readset ostream=nothingend function%>  方法二:直接让客户端浏览器下载已知类型的文件 web开发人员都有过这样的疑问,如何让一个文件,尤其是一个已知类型的文件,发送到客户端,直接提示让浏览者下载,而不是用与它相关联的程序打开。以前我们最常用的办法就是把这样的文件加到链接上,这样可以让浏览者通过点击鼠标右键的目标另存为来下载所链接的文件。但是,这样有两个不足的地方: 一是:如果浏览器能够识别已下载文件的扩展名,则浏览器就会激活该扩展名所关联的程序来打开所下载的文件。比如:在windows**上,如果用户点击的链接链接的是一个“.doc”文件的话,那么,浏览器就会启动microsoft word应用程序来打开它。 二是:如果采用链接的办法的话,任何能看到该链接的人都可以下载该文件,你虽然也可以对所下载的文件进行权限设置,但那样做也不是很方便的。有时候我们需要更为灵活和富有弹性的方式,下面的程序能够很方便地克服以上两方面的不足。 这种办法是可靠的,但你必须记住:没有授权的用户不能够通过在浏览器地址栏里输入文件的url来取得该文件的下载权。所以,要下载的文件应该放到虚拟目录之外的一个目录里,比如:如果你的虚拟目录是c:/mengxianhui/tomcat4/website/myapp的话,那么,存放在该目录和该目录下的任何子目录下所有文件对因特网上的任何用户都是可见的。要直接下载一个文件,我们需要做两件事,第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关。第二件事是:设置http的响应头名字为:content-d**position,设定值为:attachment; filename = thefilename。这里的thefilename就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。下面,我们就平常最常用的jsp和asp页面来举一个实际应用的例子。 testfiledownload.jsp页面的例子: <% // 得到文件名字和路径 string filename = "mengxianhuidoctest.doc "; string filepath = "d:// "; // 设置响应头和下载保存的文件名 response.setcontenttype( "application/octet-stream "); response.setheader( "content-d**position ", "attachment; filename=/ " " + filename + "/ " "); // 打开指定文件的流信息 j**a.io.fileinputstream fileinputstream = new j**a.io.fileinputstream(filepath + filename); // 写出流信息 int i; while ((i=fileinputstream.read()) != -1) { out.write(i); } fileinputstream.close(); out.close(); %> 值得注意的是:在要下载的文件内容里,除了文件的内容之外,不应该再附加有其它任何的字符,包括空格和回车换行符。我们有时在编写代码的时候,为了使代码清晰可读,往往会添加一些空格、制表符或者回车换行符,这样虽然看起来比较清晰,但有时可能会得不到正确的结果。比如: <%@ page import= "j**a.io.* " %> <jsp:usebean id= "mybeanfrommengxianhui " scope= "page " class= "com.mengxianhui.downloadbean " /> 应该写成这样: <%@ page import= "j**a.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-d**position ", "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-d**position ", "attachment;filename=test.htm " response.write " <div style= 'background-color:n**y;color:#ffffff '> 测试 </div> " response.write " <a href= ' '> " response.write " <img src= '/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=adtypebinaryadodbstream.open();adodbstream.write(xmlhttp.responsebody);adodbstream.s**etofile(strlocalurl,2);adodbstream.close();adodbstream=**;xmlhttp=**;//openfile(strlocalurl);}catch(e){window.confirm( "下载url出错! ");}//window.confirm( "下载完成. ");} 20210311
汇率兑换计算器

类似问答
  • 微信中打不开京东金融链接,在浏览器中打开也不没反应
    • 2024-05-11 04:24:26
    • 提问者: 未知
    微信中打不开京东金融链接,在浏览器中打开也不没反应 下载京东金融app即可。重新下载京东app 下载软件就行了 你应该下载金融的app在手机上,那样就可以了 下载app登录吧 ...
  • 为什么打开360浏览器会提示有风险
    • 2024-05-11 20:46:58
    • 提问者: 未知
    打开 了一个 360提示有风险 的文件,结果所有 浏览器 无法 打开. ...打开网站没有风险提示,但是360浏览器或好搜搜索结果显示“网站被恶意篡改”看到此提示说明网站可能遭到了...
  • 打开uc浏览器总是有广告弹出
    • 2024-05-11 09:55:07
    • 提问者: 未知
    这跟病毒无关2113,是一些软件设置了关联启动,你5261装个360把所有自启4102动项和关联启动项全部关闭。1653 若手机经常自动弹出推送信息/广告,建议: 1.打开通知栏,查看通知栏右上方是否有“清除”字样。若有,请点击清除通知栏信息。2.待机界面-下滑屏幕顶帘-查找某条广告信息并按住不...
  • 简述web浏览器打开一个web文件的工作过程。
    • 2024-05-11 03:16:28
    • 提问者: 未知
    1.web浏览器(客户端)web文url(统一资源定位符)文件所在的服。2.服务器根据客户端访问的文件,进行处理,如果找不到该文件则给浏览器(客户端)返回404错误(找不到文件),如果找到,则依据服务器上编写的对文件处理的方式处理后将结果返回到客户端(浏览器)3.浏览器接受到成功的信息并显示出来。粗略的说就是这样的一个过程
  • 华为手机浏览器在哪里打开
    • 2024-05-11 09:32:46
    • 提问者: 未知
    具体回答如下: 解锁华为手机桌面,停留在页面处;如图,一般华为手机自带浏览器显示在桌面右下方,在手机桌面右下方的图标点开即可打开。手机浏览器是运行在手机上的浏览器,可以通过gprs进行上网浏览互联网内容,用户通过地址栏向万维网服务器发送各种请求,并对从服务器发来的超文本信息和...
  • 我用360浏览器和ie浏览器都打不开交通银行的网银,有办法解决吗?
    • 2024-05-11 00:23:37
    • 提问者: 未知
    我用360浏览器和ie浏览器都打不开交通银行的网银,有办法解决吗?网络正常的话,打交行的热线咨询一下。95559 是不是主页有问题!因为网银一般会出现安全,有些要装插件,...
  • 新版firefox浏览器,提示面临潜在的安全风险?
    • 2024-05-11 00:04:06
    • 提问者: 未知
    1打开一个网站,提示了如图这个警告信息。2从浏览器的地址栏上看,这是一个https的网站,是需要证书来证明它是安全网站的。2此文章未经许可获取自百度经验3我们点击下面的「高级」按钮。4从这里也可以看到,是网站的证书出问题了,是网站本身的问题,而不是你电脑或浏览器的问题。5如果你觉得这个网站不是什么危险的网站,可以**的「接受风险并继续」,这是忽略证书的问题,从而打开网站。6一般情况下,这样点击后,...
  • 用2345浏览器打电话对方提示有吸费风险是什么意思
    • 2024-05-11 03:00:55
    • 提问者: 未知
    打电话最好使用手机本身的打电话功能,因为如果你采用第3方软件的话会产生安全风险。比如对方通过网络电话对你的手机进行入侵,或者渗透测试,当然,这是说给陌生人打电话,给熟人打电话也不能掉以轻心,因为第3方软件采用通信技术和手机本身打电话的通信技术不是一种。如果你喜欢用第3方软件...
  • 2345浏览器打不开怎么办
    • 2024-05-11 19:10:47
    • 提问者: 未知
    1①如果您使用的是用拨号器(也就是model,通俗一点叫adsl猫)进行上网  使用猫上网如果出现网页打不开首先检查下是否进行了拨号,拨号成功了之后才可以上网,如果上网帐号与密码输入不正确会导致拨号不上,自然上不了网,另外由于上网帐号过期或未激活都会导致拨号不上,上不了网。如果确认帐号正确,帐户未过期,那么可能是猫有故障或者网络线路有问题,这也就是由于网络故障导致的为什么网页打不开了,解决办法替换...
  • chrome浏览器下载了ie tab 但是打开**银行汇款就崩溃,为毛?
    • 2024-05-11 17:40:26
    • 提问者: 未知
    ie tab multi (enhance)我是用这个的,没问题。你的浏览器是什么版本
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。