当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  利用adodb.stream直接下载任何后缀的文件(防盗链)

 利用adodb.stream直接下载任何后缀的文件(防盗链)

点击次数:17 次 发布日期:2008-11-26 11:11:02 作者:源代码网
源代码网推荐      原作:possible_Y,载自时代课堂
源代码网推荐  
源代码网推荐  在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:
源代码网推荐  1、设置你的服务器的iis,给doc等后缀名做映射
源代码网推荐  2、在向客户端发送时设置其contenttype
源代码网推荐  
源代码网推荐  下面详细说明方法2
源代码网推荐  
源代码网推荐  <%
源代码网推荐  Response.Buffer = true
源代码网推荐  Response.Clear
源代码网推荐  
源代码网推荐  dim url
源代码网推荐  Dim fso,fl,flsize
源代码网推荐  dim Dname
源代码网推荐  Dim objStream,ContentType,flName,isre,url1
源代码网推荐  "*********************************************调用时传入的下载文件名
源代码网推荐  Dname=trim(request("n"))
源代码网推荐  "******************************************************************
源代码网推荐  If Dname<>"" Then
源代码网推荐  "******************************下载文件存放的服务端目录
源代码网推荐   url=server.MapPath("/")&""&Dname
源代码网推荐  "***************************************************
源代码网推荐  End If
源代码网推荐  
源代码网推荐  Set fso=Server.CreateObject("Scripting.FileSystemObject")
源代码网推荐   Set fl=fso.getfile(url)
源代码网推荐   flsize=fl.size
源代码网推荐   flName=fl.name
源代码网推荐   Set fl=Nothing
源代码网推荐   Set fso=Nothing
源代码网推荐  %>
源代码网推荐  <%
源代码网推荐   Set objStream = Server.CreateObject("ADODB.Stream")
源代码网推荐   objStream.Open
源代码网推荐   objStream.Type = 1
源代码网推荐   objStream.LoadFromFile url
源代码网推荐  
源代码网推荐  
源代码网推荐   Select Case lcase(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"
源代码网推荐   Case Else
源代码网推荐   ContentType = "application/octet-stream"
源代码网推荐   End Select
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
源代码网推荐   Response.AddHeader "Content-Length", flsize
源代码网推荐  
源代码网推荐   Response.Charset = "UTF-8"
源代码网推荐   Response.ContentType = ContentType
源代码网推荐  
源代码网推荐   Response.BinaryWrite objStream.Read
源代码网推荐   Response.Flush
源代码网推荐   response.Clear()
源代码网推荐   objStream.Close
源代码网推荐   Set objStream = Nothing
源代码网推荐  
源代码网推荐  %>
源代码网推荐  
源代码网推荐  将下面的东西存成download.asp然后你就可以用<a herf="http://www.knowsky.com/download.asp?n=file.doc">download!</a>来下载同一目录下的file.doc了!
源代码网推荐  
源代码网推荐  但是这里有个问题就是直接将file.doc路径写在url里是不安全的,所以解决方案应该是将file.doc的路径存到数据库里,同过查找数据库后得到路径
源代码网推荐  
源代码网推荐  在这个程序的最前面如果加上一个判断:
源代码网推荐  
源代码网推荐  if instr(Request.ServerVariables("HTTP_REFERER"),"http://你的域名")=0 then
源代码网推荐   Response.End
源代码网推荐  end if
源代码网推荐  
源代码网推荐  就能够很好的防止别人的盗链了
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华