注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网事

备忘录

 
 
 

日志

 
 

ASP实现文件下载  

2008-08-18 11:15:46|  分类: ASP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
第一个:
      '    描述: 弹出保存对话框, 而不是直接查看, 防止暴露文件路径
      '    参数: fullpath : 文件在服务器上的完整物理路径
      '    返回: true/false : 下载是否成功

      Function downloadfile(fullpath)
          downloadfile = False

          Dim strfilename, s, fso, f, intfilelength

          Set fso = server.createobject("scripting.filesystemobject")
          If not fso.fileexists(fullpath) Then
              Exit Function
          End If

          Set f = fso.getfile(fullpath)
          '获取文件大小
          intfilelength = f.size

          Set s = server.createobject("adodb.stream")
          s.open
          s.type = 1
          s.loadfromfile(fullpath)

          response.buffer = True
          response.clear
          'response.addheader "content-type","application/x-msdownload"
          'response.addheader "Content-Encoding","GB2312"
          response.addheader "content-disposition","attachment;filename=" & f.name
          response.addheader "content-length" ,intfilelength
          response.contenttype = "application/octet-stream"
          While not s.eos
              response.binarywrite s.read(1024 * 64)
            '    关键的一句
              response.flush
          wend
          s.close
          Set s = Nothing

          downloadfile = True
      End Function

第二个:

Dim Stream
Dim Contents
Dim FileName
Dim FileExt
Const adTypeBinary = 1
FileName=Request.QueryString("FileName")
if FileName = "" Then
Response.Write "无效文件名."
Response.End
End if
' 下面是不希望下载的文件
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
Response.Write "受保护文件,不能下载."
Response.End
End Select
' 下载这个文件

name=Mid(FileName, InStrRev(FileName, "/")+1)

Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename="&name
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End

  评论这张
 
阅读(560)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018