日志文章

2007年10月23日 10:07:39

asp实现文件下载

memberDownload.asp
文件下载前台页面:
<%
Set fso= CreateObject("Scripting.FileSystemObject")
path=Server.MapPath (".") & "/$hoe/memberdl/0000"
if fso.FolderExists(path) then
  Set f=fso.GetFolder(path)
Set fc=f.Files

  'if fc.count>0 then
response.Write ("<ul><li type=square>Public<ul>")
  for each file in fc
  response.write("<li type=circle><a href='filedown.asp?floder=0000&strfile=" & file.name & "'>" & file.name & "</a>")
    next
  Response.write("</ul></ul>")
'end if
end if
%>
<%
    set conn1=Server.CreateObject("ADODB.connection")
  Set rs1 = Server.CreateObject("ADODB.Recordset")
  conn1.open getConn1()
  sql="SELECT tblConfEnroll.ConfID FROM tblMemberRecord INNER JOIN tblConfEnroll ON tblMemberRecord.UID = tblConfEnroll.UID WHERE (tblMemberRecord.GAMAMemberNo='" & Session("MemberNo") & "')"
    rs1.Open sql,conn1,3
 
 
    if rs1.EOF and rs1.BOF Then
        Response.Write (" the member didn't take part in the confernce")
    else
      dim i
      for i=1 to rs1.RecordCount
 
      set conn2=Server.CreateObject("ADODB.connection")
          Set rs2 = Server.CreateObject("ADODB.Recordset")
          conn2.open getConn1()
  sql="select ConfName, CConfName from tblConference where (ConfID=" & rs1("ConfID") & ")"
 
 
  rs2.Open sql,conn2,3
  if rs2.BOF and rs2.EOF then
      Response.Write ("confid is invalid!")
  else
   
      Set fso= CreateObject("Scripting.FileSystemObject")
      path=Server.MapPath(".") &"/$hoe/memberdl/" & rs1("ConfID")
   
      if fso.FolderExists(path) then
     
    Set f=fso.GetFolder(path)
     
    Set fc=f.Files
   
    ' if fc.count>0 then
     
      if rs2("ConfName")<>"" then
        response.Write ("<ul><li type=square>" & rs2("CConfName") &"<ul>")
       
        for each file in fc
        response.write("<li type=circle><a href='filedown.asp?floder=" & rs1("ConfID")& "&strfile=" & file.name & "'>" & file.name & "</a>")

        next
      else
        response.Write (rs2("ConfName") &"<BR>")
        for each file in fc
        response.write("<li type=circle><a href='filedown.asp?floder=" & rs1("ConfID")& "&strfile=" & file.name & "'>" & file.name & "</a>")
        next
      end if
      Response.Write("</ul></ul>")
    end if
    'end if
     
  end if
  Set rs2 = Nothing

          Set conn2 = Nothing
 
    rs1.MoveNext()
      next
    end if
    Set rs1 = Nothing
  Set conn1 = Nothing
     
 

%>



filedown.asp
文件下载后台处理文件:包括下载权限的处理
<%@ CODEPAGE="65001"%>
<!-- #include file="check_user_inc.asp"-->
<!--#include file="common.asp"-->

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GAMA</title>
</head>

<body>
<%
floder=Request("floder")
strfile=Request("strfile")
if floder="0000" then
  path="$hoe/memberdl/" & floder & "/" & strfile
  downloadFile(path)
else
    set conn1=Server.CreateObject("ADODB.connection")
  Set rs1 = Server.CreateObject("ADODB.Recordset")
  conn1.open getConn1()
  sql="SELECT tblConfEnroll.ConfID FROM tblMemberRecord INNER JOIN tblConfEnroll ON tblMemberRecord.UID = tblConfEnroll.UID WHERE (tblMemberRecord.GAMAMemberNo='" & Session("MemberNo") & "' and tblConfEnroll.ConfID=" & floder & ")"

  rs1.Open sql,conn1,3
  if rs1.EOF and rs1.BOF Then
      Response.Write (" <p><strong>You don't have right to access the folder</strong></p> ")
  Response.End()
    else
      path="$hoe/memberdl/" & floder & "/" & strfile
      downloadFile(path)
  end if
  Set rs1 = Nothing
  Set conn1 = Nothing
end if

%>
<%

'文件下载函数,传入一个相对路径:
function downloadFile(strFile)
strFilename = server.MapPath(strFile)

'Clear the buffer
Response.Buffer = True
Response.Clear

'Create stream
Set s = Server.CreateObject("ADODB.Stream")
s.Open

'Set as binary
s.Type = 1

'Load in the file
on error resume next

'Check the file exists
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if not fso.FileExists(strFilename) then
Response.Write("<p><strong>Page Error </strong></p>")
Response.End
end if

'Get length of file
Set f = fso.GetFile(strFilename)
intFilelength = f.size

s.LoadFromFile(strFilename)
if err then
Response.Write("<p><strong>Page Error </strong></p>")
Response.End
end if

'Send the headers to the users browser
Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
Response.AddHeader "Content-Length", intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"

'Output the file to the browser
Response.BinaryWrite s.Read
Response.Flush

'Tidy up
s.Close
Set s = Nothing

End Function
%>

</body>
</html>

Tags: 文件下载   asp  

类别: asp |  评论(0) |  浏览(1198) |  收藏
发表评论