用asp实现文件浏览、上传、下载的程序

可以放在服务器上,对服务器上的文件进行浏览、上传、下载,可下载文件源码。
把下所有代码入在一个文件里即可,文件的后缀要为asp。


代码如下:

<% 
thedir = request("thedir") 
if thedir = "" then 
 folderini = server.mappath(".")&"\" 
else 
 folderini = server.mappath(thedir)&"\" 
end if

foldinfo=trim(Request.Querystring("foldinfo")) 
if foldinfo = "" then 
 foldinfo = folderini 
end if

class clsUp 
Dim Form,File 
Dim AllowExt_  
Dim NoAllowExt_  
Private oUpFileStream  
Private isErr_   
Private ErrMessage_  
Private isGetData_

Public Property Get Version 
 Version="v1.0.0" 
End Property

Public Property Get isErr 
 isErr=isErr_ 
End Property

Public Property Get ErrMessage 
 ErrMessage=ErrMessage_ 
End Property

Public Property Get AllowExt 
 AllowExt=AllowExt_ 
End Property

Public Property Let AllowExt(Value)  
 AllowExt_=LCase(Value) 
End Property

Public Property Get NoAllowExt 
 NoAllowExt=NoAllowExt_ 
End Property

Public Property Let NoAllowExt(Value) 
 NoAllowExt_=LCase(Value) 
End Property

Private Sub Class_Initialize 
 isErr_ = 0 
 NoAllowExt=""   
 NoAllowExt=LCase(NoAllowExt) 
 AllowExt=""   
 AllowExt=LCase(AllowExt) 
 isGetData_=false 
End Sub

Private Sub Class_Terminate  
 on error Resume Next

Form.RemoveAll 
 Set Form = Nothing 
 File.RemoveAll 
 Set File = Nothing 
 oUpFileStream.Close 
 Set oUpFileStream = Nothing 
End Sub

Public Sub GetData (MaxSize)

on error Resume Next 
 if isGetData_=false then  
  Dim getupdata1,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo 
  Dim sFormValue,sFileName 
  Dim iFindStart,iFindEnd 
  Dim iFormStart,iFormEnd,sFormName

If Request.TotalBytes < 1 Then  
   isErr_ = 1 
   ErrMessage_="" 
   Exit Sub 
  End If 
  If MaxSize > 0 Then  
   If Request.TotalBytes > MaxSize Then 
   isErr_ = 2  
   ErrMessage_="" 
   Exit Sub 
   End If 
  End If 
  Set Form = Server.CreateObject ("Scripting.Dictionary") 
  Form.CompareMode = 1 
  Set File = Server.CreateObject ("Scripting.Dictionary") 
  File.CompareMode = 1 
  Set tStream = Server.CreateObject ("ADODB.Stream") 
  Set oUpFileStream = Server.CreateObject ("ADODB.Stream") 
  oUpFileStream.Type = 1 
  oUpFileStream.Mode = 3 
  oUpFileStream.Open  
  oUpFileStream.Write Request.BinaryRead (Request.TotalBytes) 
  oUpFileStream.Position = 0 
  getupdata1 = oUpFileStream.Read  
  iFormEnd = oUpFileStream.Size 
  bCrLf = ChrB (13) & ChrB (10)

sSpace = MidB (getupdata1,1, InStrB (1,getupdata1,bCrLf)-1) 
  iStart = LenB(sSpace) 
  iFormStart = iStart+2

Do 
   iInfoEnd = InStrB (iFormStart,getupdata1,bCrLf & bCrLf)+3 
   tStream.Type = 1 
   tStream.Mode = 3 
   tStream.Open 
   oUpFileStream.Position = iFormStart 
   oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart 
   tStream.Position = 0 
   tStream.Type = 2 
   tStream.CharSet = "gb2312" 
   sInfo = tStream.ReadText

iFormStart = InStrB (iInfoEnd,getupdata1,sSpace)-1 
   iFindStart = InStr (22,sInfo,"name=""",1)+6 
   iFindEnd = InStr (iFindStart,sInfo,"""",1) 
   sFormName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)

If InStr (45,sInfo,"filename=""",1) > 0 Then 
    Set oFileInfo = new clsFileInfo

iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10 
    iFindEnd = InStr (iFindStart,sInfo,""""&vbCrLf,1) 
    sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart) 
    oFileInfo.FileName = GetFileName(sFileName) 
    oFileInfo.FilePath = GetFilePath(sFileName) 
    oFileInfo.FileExt = GetFileExt(sFileName) 
    iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14 
    iFindEnd = InStr (iFindStart,sInfo,vbCr) 
    oFileInfo.FileMIME = Mid(sinfo,iFindStart,iFindEnd-iFindStart) 
    oFileInfo.FileStart = iInfoEnd 
    oFileInfo.FileSize = iFormStart -iInfoEnd -2 
    oFileInfo.FormName = sFormName 
    file.add sFormName,oFileInfo 
   else

tStream.Close 
    tStream.Type = 1 
    tStream.Mode = 3 
    tStream.Open 
    oUpFileStream.Position = iInfoEnd  
    oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2 
    tStream.Position = 0 
    tStream.Type = 2 
    tStream.CharSet = "gb2312" 
    sFormValue = tStream.ReadText 
    If Form.Exists (sFormName) Then 
     Form (sFormName) = Form (sFormName) & ", " & sFormValue 
     else 
     Form.Add sFormName,sFormValue 
    End If 
   End If 
   tStream.Close 
   iFormStart = iFormStart+iStart+2

Loop Until (iFormStart+2) >= iFormEnd  
  getupdata1 = "" 
  Set tStream = Nothing 
  isGetData_=true 
 end if 
End Sub

Public Function SaveToFile(Item,Path) 
 SaveToFile=SaveToFileEx(Item,Path,True) 
End Function

Public Function AutoSave(Item,Path) 
 AutoSave=SaveToFileEx(Item,Path,false) 
End Function

Private Function SaveToFileEx(Item,Path,Over) 
 On Error Resume Next 
 Dim oFileStream 
 Dim tmpPath 
 Dim nohack 
 isErr=0 
 Set oFileStream = CreateObject ("ADODB.Stream") 
 oFileStream.Type = 1 
 oFileStream.Mode = 3 
 oFileStream.Open 
 oUpFileStream.Position = File(Item).FileStart 
 oUpFileStream.CopyTo oFileStream,File(Item).FileSize 
 nohack=split(path,".") 
 tmpPath=nohack(0)&"."&nohack(ubound(nohack)) 
 if Over then 
  if isAllowExt(GetFileExt(tmpPath)) then 
   oFileStream.SaveToFile tmpPath,2 
   Else 
   isErr_=3 
   ErrMessage_="!" 
  End if 
 Else 
  Path=GetFilePath(Path) 
  if isAllowExt(File(Item).FileExt) then 
   do 
    Err.Clear() 
    nohack=split(Path&GetNewFileName()&"."&File(Item).FileExt,".")  
    tmpPath=nohack(0)&"."&nohack(ubound(nohack)) 
    oFileStream.SaveToFile tmpPath 
   loop Until Err.number<1 
   oFileStream.SaveToFile Path 
   Else 
   isErr_=3 
   ErrMessage_="该后缀名的文件不允许上传!" 
  End if 
 End if 
 oFileStream.Close 
 Set oFileStream = Nothing 
 if isErr_=3 then SaveToFileEx="" else SaveToFileEx=GetFileName(tmpPath) 
End Function

'取得文件数据 
Public Function FileData(Item) 
 isErr_=0 
 if isAllowExt(File(Item).FileExt) then 
  oUpFileStream.Position = File(Item).FileStart 
  FileData = oUpFileStream.Read (File(Item).FileSize) 
  Else 
  isErr_=3 
  ErrMessage_="" 
  FileData="" 
 End if 
End Function

Public function GetFilePath(FullPath) 
  If FullPath <> "" Then 
    GetFilePath = Left(FullPath,InStrRev(FullPath, "\")) 
    Else 
    GetFilePath = "" 
  End If 
End function

Public Function GetFileName(FullPath) 
  If FullPath <> "" Then 
    GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1) 
    Else 
    GetFileName = "" 
  End If 
End function

Public Function GetFileExt(FullPath) 
  If FullPath <> "" Then 
    GetFileExt = LCase(Mid(FullPath,InStrRev(FullPath, ".")+1)) 
    Else 
    GetFileExt = "" 
  End If 
End function

Public Function GetNewFileName() 
 dim ranNum 
 dim dtNow 
 dtNow=Now() 
 ranNum=int(90000*rnd)+10000 
 GetNewFileName=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum 
End Function

Public Function isAllowExt(Ext) 
 if NoAllowExt="" then 
  isAllowExt=cbool(InStr(1,";"&AllowExt&";",LCase(";"&Ext&";"))) 
 else 
  isAllowExt=not CBool(InStr(1,";"&NoAllowExt&";",LCase(";"&Ext&";"))) 
 end if 
End Function 
End Class

Class clsFileInfo 
Dim FormName,FileName,FilePath,FileSize,FileMIME,FileStart,FileExt 
End Class 
%>

<%

function deletefile(filename) 
 set objfilesys=server.createobject("scripting.filesystemobject") 
 ss=filename 
 ss=foldinfo&ss 
 if objfilesys.FILEExists(ss) then 
 objfilesys.deleteFILE ss 
 end if 
end function

function deletedir(dirname) 
 set objfilesys=server.createobject("scripting.filesystemobject") 
 ss=dirname&idd 
 ss=server.mappath(ss) 
 if objfilesys.FOLDERExists(ss) then 
 objfilesys.deleteFOLDER ss 
 end if 
end function

function download(filename) 
 Response.Buffer = true   
 Response.Clear

dim  url   
 Dim  fso,fl,flsize   
 dim  Dname   
 Dim  objStream,ContentType,flName,isre,url1

Dname=filename

If  Dname<>""  Then   
  url=foldinfo&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

ContentType="text/html"

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   
end function

function uploadfiles() 
filepath=foldinfo   
set upload=new clsUp  
upload.NoAllowExt="aep" 
upload.GetData (3072000)

if upload.form("act")="uploadfile" then 
 for each formName in upload.File 
  set file=upload.File(formName) 
  randomize 
  filename1=file.FileName 
  filename=filepath&filename1

if file.FileSize>0 then 
   upload.SaveToFile formName,FileName 
  end if 
  set file=nothing 
 next 
 set upload=nothing 
end if 
end function

action = request("action") 
if action = "deletefile" then 
 filename = request("filename") 
 deletefile(filename) 
end if

if action = "deletedir" then 
 deletedirname = request("deletedir") 
 deletedir(deletedirname) 
end if

if action = "download" then 
 filename = request("filename") 
 download(filename) 
end if

if action = "uploadfiles" then 
 uploadfiles() 
end if 
%>

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
</head> 
<body> 
<table> 
  <tr> 
    <td><font>当前目录:</font><font color="#FF7120"><%=foldinfo%></font>

<form name="form1" method="post" action="?foldinfo=<%=foldinfo%>&action=uploadfiles" enctype="multipart/form-data"> 
        <input type="hidden" name="act" value="uploadfile"> 
        <input type="file" name="file1" style="width:300'" class="tx1" value=""> 
        <input type="submit" name="Submit" value="上传" class="button"> 
  </form>

</td> 
  </tr> 
  <tr> 
    <td>  
      <hr size="1"> 
    </td> 
  </tr> 
  <tr> 
    <td>  
      <table width="750" border="0" cellspacing="1" cellpadding="1"> 
        <tr bgcolor="#00CC00">  
          <td width="300" >Folder</td> 
          <td width="180" >Size</td> 
          <td width="200" >LastTime</td> 
          <td width="100" >Operate</td> 
        </tr> 
      </table> 
    </td> 
  </tr> 
  <tr>  
    <td align="right" >  
      <% 
            upfolder=left(foldinfo,len(foldinfo)-1) 
            upfolder=left(upfolder,InstrRev(upfolder, "\")) 
            if foldinfo<>folderini then  
        response.write("<a href='?foldinfo="&upfolder&"'>Go Back</a>") 
        else  
        response.write("Go Back") 
        end if%> 
    </td> 
  </tr> 
  <tr>  
    <td >  
      <% ShowFolderList(foldinfo) %> 
    </td> 
  </tr> 
  <tr>  
    <td >  
      <table width="750" border="0" cellspacing="1" cellpadding="1"> 
        <tr bgcolor="#009999">  
          <td width="300">File</td> 
          <td width="180">Size</td> 
          <td width="200">LastTime</td> 
          <td width="100">Operate</td> 
        </tr> 
      </table> 
    </td> 
  </tr> 
  <tr>  
    <td >  
      <% showfolderinfo(foldinfo)%> 
    </td> 
  </tr> 
  <tr>  
    <td> </td> 
  </tr> 
</table> 
<% 
Sub ShowFolderList(folderspec) 
    Dim fs, f, f1, fc, s, schild,p,fsize 
    Set fs = CreateObject("scripting.FileSystemObject") 
    Set f = fs.GetFolder(folderspec) 
    Set fc = f.SubFolders 
    For Each f1 in fc 
            s = f1.name 
            's = s &  vbCrLf 
        p = f1.DateLastModified 
        fsize = f1.Size 
            schild=folderspec&s&"\"

Response.write("<table width='750' border='0' cellspacing='1' cellpadding='1'>") 
Response.write("<tr>") 
Response.write("<td width='300' bgcolor='#ECFFD9'><font face='Wingdings' font size='3pt'>0</font><a href='?foldinfo="&schild&"'>"&s&"</a></td>") 
Response.write("<td width='180' bgcolor='#ECFFD9'>"&fsize&"</td>") 
Response.write("<td width='200' bgcolor='#ECFFD9'>"&p&"</td>") 
Response.write("<td width='100' bgcolor='#ECFFD9'>") 
Response.write("<a href=?foldinfo="&foldinfo&"&action=deletedir&deletedir="&s&">DEL</a>") 
Response.write("</td>")

Response.write("</tr>") 
Response.write("</table>")

Next 
End Sub

Sub showfolderinfo(folderspc) 
set MyFileObject=Server.CreateObject("scripting.FileSystemObject")

Set MyFolder=MyFileObject.GetFolder(folderspc)

for each thing in MyFolder.Files 
    Set afile=MyFileObject.GetFile(thing) 
    filenamecode=afile.name 
    filedetail=folderspc+filenamecode 
    filedetail=replace(filedetail,"\","*s_p_l_i_t*") 
    filesize=afile.size 
    lastmodify=afile.DateLastModified

Response.write("<table width='750' border='0' cellspacing='1' cellpadding='1'>") 
Response.write("<tr>") 
Response.write("<td width='300' bgcolor='#f4f4ff'><font face='Wingdings' font size='3pt'>2</font>"&filenamecode&"</td>") 
Response.write("<td width='180' bgcolor='#f4f4ff'>"&filesize&"</td>") 
Response.write("<td width='200' bgcolor='#f4f4ff'>"&lastmodify&"</td>") 
Response.write("<td width='100' bgcolor='#f4f4ff'>") 
Response.write("<a href=?foldinfo="&foldinfo&"&action=deletefile&filename="&filenamecode&">DEL</a> ") 
Response.write("<a href=?foldinfo="&foldinfo&"&action=download&filename="&filenamecode&">DL</a>") 
Response.write("</td>") 
Response.write("</tr>") 
Response.write("</table>") 
Next 
End sub 
%> 
</body> 
</html>

(0)

相关推荐

  • asp.net 多文件上传,兼容IE6/7/8,提供完整代码下载

    最终效果如下:现贴出核心代码如下: aspx里的代码: 复制代码 代码如下: <div style="text-align: center"> <div style="width: 200px;"> <input type="file" size="50" name="File" /> <span id="upload"></span

  • JAVA使用commos-fileupload实现文件上传与下载实例解析

    首先给大家介绍一文件的上传 实体类 import java.sql.Timestamp; /** * * @Decription 文件上传实体类 * */ public class Upfile { private String id;// ID主键 使用uuid随机生成 private String uuidname; // UUID名称 private String filename;//文件名称 private String savepath; // 保存路径 private Timest

  • 使用pcs api往免费的百度网盘上传下载文件的方法

    百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621 百度官方pcs api文档:http://developer.baidu.com/wiki/index.php?title=docs/pcs/overview,上面有各种语言的SDK,我用的laravel

  • C++文件上传、下载工具

    本文实例为大家分享了C++文件上传下载的实现代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/timeb.h> #include <sys/ioctl.h> #include <string.h> #include <fcntl.h> #include <sys/wait.h> #in

  • Java FTPClient实现文件上传下载

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 所用到的jar包有:  commons-net-1.4.1.jar  jakarta-oro.jar  一.上传文件 文件上传源代码 /** * Description: 向FTP服务器上传文件 * @Version1.0 * @param url FTP服务器hostname * @param

  • JavaWeb实现文件上传下载功能实例解析

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

  • Jsp页面实现文件上传下载类代码第1/2页

    刚才和lp看完电影,把jsp页面抽出class调整了一下.最近总上经典,是感觉既然当了斑竹,就该留下点什么.lp这几天也半开玩笑半生气的说,一回来就上经典,就发帖,你干脆娶经典作lp得了.想想,这几天是有点夸张,以后放慢速度了.保持1星期1帖吧,那样也能多想写,多总结些.发帖的初衷就是有时候看到有的朋友问的问题,似乎还没有走进java的门,希望这样的帖子,能对新手一点帮助,也就满足了.有时候随意的一段话,其实也是自己的一点经验,而有时候之所以絮絮叨叨,是想把问题说的清楚明白,让高手见笑了.因为在

  • Asp.net实现MVC处理文件的上传下载功能实例教程

    上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个,而这个控件的缺席给我们带来一些小问题.这篇文章主要说如何在Asp.net MVC中上传文件,然后如何再从服务器中把上传过的文件下载下来. 二.实现方法 1.文件上传

  • asp.net Web Services上传和下载文件(完整代码)第1/2页

    下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器.一:通过Web Services显示和下载文件 我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是GetImage()和GetImageType(),前者返回二进制文件字节数组,后者返回文件类型,其中,GetImage()方法有一个参数,用来在客户端选择要显示或下载的文件名字.这里我们所显示和下载的文件可以不在虚拟目录

  • Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载

    在Flex的应用开发中,同ASP.NET,JSP,PHP等应用一样,都会有上传/下载文件的应用需求,Flex的SDK也为我们提供了专门的类 FileRefUdderence实现文件上传/下载.Flex只是作为一个客户端,要实现上传或下载必须得为其提供一个服务端来接受上传或下载的请求,本文以ASP.NET中的HttpHandler作为文件上传的服务端来完成上传功能. OK,我们从Flex客户端开始,看看客户端是通过什么方式想服务端发起请求.Flex客户端要完成文件上传下载都是通过FileRefUd

随机推荐