使用asp下的adodb.stream下载文件而不是打开
2023-06-13 09:13:59 时间
在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:
1、设置你的服务器的iis,给doc等后缀名做映射。
2、在向客户端发送时设置其contenttype。
下面详细说明方法2
程序代码:
<% Response.Buffer=true Response.Clear dimurl Dimfso,fl,flsize dimDname DimobjStream,ContentType,flName,isre,url1 "*********************************************调用时传入的下载文件名 Dname=trim(request("n")) "****************************************************************** IfDname<>""Then "******************************下载文件存放的服务端目录 url=server.MapPath("/")&"\"&Dname "*************************************************** EndIf Setfso=Server.CreateObject("Scripting.FileSystemObject") Setfl=fso.getfile(url) flsize=fl.size flName=fl.name Setfl=Nothing Setfso=Nothing %> <% SetobjStream=Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type=1 objStream.LoadFromFileurl SelectCaselcase(Right(flName,4)) Case".asf" ContentType="video/x-ms-asf" Case".avi" ContentType="video/avi" Case".doc" ContentType="application/msword" Case".zip" ContentType="application/zip" Case".xls" ContentType="application/vnd.ms-excel" Case".gif" ContentType="image/gif" Case".jpg","jpeg" ContentType="image/jpeg" Case".wav" ContentType="audio/wav" Case".mp3" ContentType="audio/mpeg3" Case".mpg","mpeg" ContentType="video/mpeg" Case".rtf" ContentType="application/rtf" Case".htm","html" ContentType="text/html" Case".txt" ContentType="text/plain" CaseElse ContentType="application/octet-stream" EndSelect Response.AddHeader"Content-Disposition","attachment;filename="&flName Response.AddHeader"Content-Length",flsize Response.Charset="UTF-8" Response.ContentType=ContentType Response.BinaryWriteobjStream.Read Response.Flush response.Clear() objStream.Close SetobjStream=Nothing %>
将下面的东西存成download.asp然后你就可以用<a herf="http://xxx.xxx.com/download.asp?n=file.doc">download!</a>来下载同一目录下的file.doc了!
但是这里有个问题就是直接将file.doc路径写在url里是不安全的,所以解决方案应该是将file.doc的路径存到数据库里,同过查找数据库后得到路径
在这个程序的最前面如果加上一个判断:
ifinstr(Request.ServerVariables("HTTP_REFERER"),"http://你的域名")=0then Response.End endif
就能够很好的防止别人的盗链了.
相关文章
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- ASP.netMVC文件下载
- ASP.NET Core 6框架揭秘实例演示[29]:搭建文件服务器
- 苹果证书p12和描述文件的创建方法
- Spartacus 项目中 .env-cmdrc 文件的作用是什么?
- 利用JAVA获取远程文件及断点续传详解编程语言
- Linux下新建文件的实用命令(linux命令新建文件)
- 文件Linux缺少so文件解决方案(linux缺少so)
- Linux文件驱动:深入理解Linux文件系统(linux文件驱动)
- Linux文件修改时间的探索(linux文件修改时间)
- ASP连接MySQL的实现方式(asp文件连接mysql)
- 数据如何使用ASP操作MySQL数据库(asp怎么存取mysql)
- 优雅的结合ASP与MySQL的SQL语句(asp和mysql语句)
- 灵活运用ASP与MySQL连接的妙用(asp与mysql连接)
- asp模板引擎终结者(WEB开发之ASP模式)
- 用asp实现文件浏览、上传、下载的程序
- 用ASP打开远端MDB文件的方法
- asp下将数据库中的信息存储至XML文件中
- asp动态include文件,方便多模板的实现
- asp在IE浏览器中下载服务端上的各类文件的实现方法
- 提高CSS文件可维护性的五种方法总结
- 不用WinRar只有asp将网络空间上的文件打包下载
- asp.netWebServices上传和下载文件(完整代码)
- asp.net文件下载实现代码
- asp.net下载文件时输出文件内容
- ASP.NET下向SQLServer2008导入文件实例操作方法
- ASP.NET中下载文件的几种实例代码
- php断点续传之如何分割合并文件
- ASP.NET批量下载文件的方法
- Asp.Net的FileUpload类实现上传文件实例