利用stream直接下载文件

原创 2003年12月31日 10:20:00

在浏览器的地址栏里直接输入一个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://xxx.xxx.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

就能够很好的防止别人的盗链了

用stream直接下载文件

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:1、设置你的...
  • wanxun1987000
  • wanxun1987000
  • 2009年08月24日 21:53
  • 198

利用Stream下载文件

Function dl(f,n)    On error resume Next    Set s=CreateObject("Adodb.Stream")    s.Mode=3    s.Type...
  • djcsch2001
  • djcsch2001
  • 2008年09月19日 14:54
  • 221

Asp利用Stream下载文件

Dim StreamDim FileName Dim FileExt Const adTypeBinary = 1FileName="你的文件路径"FileName=replace(FileName,...
  • cslg_gg
  • cslg_gg
  • 2008年08月23日 22:10
  • 231

ASP实现文件直接下载(转帖)

 选择自 calven1003 的 Blog 在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键-->"目标另...
  • zlp8383178
  • zlp8383178
  • 2005年09月05日 17:15
  • 875

利用Adodb.Stream直接下载文件

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法: 1、设置你...
  • swneng
  • swneng
  • 2007年07月17日 11:20
  • 288

利用Adodb.Stream直接下载文件

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:1、设置你的...
  • yxtyxt3311
  • yxtyxt3311
  • 2005年09月27日 12:56
  • 942

WCF教程--使用流Stream进行文件的上传下载

在wpf项目中,区分客户端和服务端,需要2端进行数据同步和文件传输。 wcf 文件上传的例子网上很多,我也是借鉴别人的示例。wcf 文件下载的示例网上就很少了,不知道是不是因为两者的处理方式比较...
  • chaoyangzhixue
  • chaoyangzhixue
  • 2016年01月18日 14:24
  • 3447

c#下载文件的几种方式

C#实现文件下载的几种方式 先把有问题的代码贴出来吧, using System; using System.Data; using System.Configuration; using ...
  • wanglei_samrtfish
  • wanglei_samrtfish
  • 2016年05月29日 21:48
  • 859

struts2实现文件导出type="stream"

之前项目中使用struts2实现文件导出,但是跟踪代码并没有理解这是怎么做到的。后来网上看了几个大神的文章才略有所悟,在此分享出来,望各位指点。 配置:                       ...
  • antao592
  • antao592
  • 2016年10月09日 16:54
  • 1519

nginx不浏览直接下载文件

当我们使用Nginx时,如果要让一些附件比如txt,pdf,doc等不直接在浏览器打开,而弹出另存为的对话框(也就是下载),则可以在nginx里添加如下配置: 1...
  • yaoyaodexiaozhu
  • yaoyaodexiaozhu
  • 2015年10月09日 16:41
  • 323
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用stream直接下载文件
举报原因:
原因补充:

(最多只允许输入30个字)