用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>

时间: 2024-10-13 15:56:47

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

asp.net文件批量上传下载代码与详细说明

asp教程.net文件批量上传下载代码与详细说明 private void DownLoadCompressFile()         {             //create file package             List<CompanyFileDomain> lists = new List<CompanyFileDomain>();             if (DeluxeGridFiles.SelectedKeys.Count > 0)     

PHP移动互联网开发笔记(5)——文件的上传下载

一.文件的上传 1.客户端设置: (1).在 标签中将enctype和method两个属性指明相应的值. Enctype="multipart/form-data"; Method="POST" (2).form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值 2.服务器端设置: (1).$_FILES多维数组:用于存储各种上传文件有关的信息 (2).文件上传与php配置文件的设置,如以下php.ini文件中的一些指

servlet + JSP+ mysql实现文件的上传下载等

问题描述 servlet + JSP+ mysql实现文件的上传下载等 1.我想搞一个网页,可以点击一个链接便可以实现下载mysql数据库对应的word文档,还可以上传word文档到mysql库中: 2.在网页中上传图片保存到数据库,并可在上传完毕之后,直接在线观看其图片. 本人在自编一个程序,由于技术有限,不能实现以上功能,望大家能指点一下,最好能给出一份源码让我参考下. 解决方案 开源中国上的一个类似项目讲解,参考:http://www.oschina.net/question/234345

ASP.NET2.0中全面实现文件图片上传下载处理

asp.net|上传|下载 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上传图片为例) 5.服务器端检查上传文件类型(可以检测真正文件名) 6.上传文件文件名唯一性处理(时间戳+SessionID)7.上传图片生成等比例缩略图8.上传图片加水印(文字水印,图片水印,文字+图片水印)9. 1.最简单的单文件上传(没花头) 效果图:说明:这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有h

用ASP实现文件直接上传功能

上传 引言 采用WEB技术实现B/S(浏览器/服务器)结构的管理系统是办公自动化的发展趋势.基于WEB技术的管理系统,由于开发周期短:与用户平台无关:易于实现交互式应用:能对信息进行快速.高效的收集.处理和发布,近几年来得到了迅速发展.而ASP技术由于其开发效率高.交互性好,安全性强等特点,逐渐成为开发管理系统的首选工具. 许多基于WEB的应用都涉及文件上传操作.常见的文件上传技术有:基于HTTP协议的:基于VB(或DELPHI等编程语言)开发的文件上传组件的:基于数据库技术的等等.这些方法一般

PHP文件的上传下载

一.文件的上传 1.客户端设置: (1).在 标签中将enctype和method两个属性指明相应的值.&nb [-] 一.文件的上传 1.客户端设置: (1).在 二.文件下载 简单文件下载只需要使用HTML的链接标记,并将属性href的URL值指定下载的文件即可.这种方法只能处理一些浏览器不能识别的MIME类型文件. 为了提高安全性,不希望在a标签中给出文件链接,则必须向浏览器发送必要的头信息,我们可以使用如下代码. 三.文件函数库 touch 设置文件的访问和修饰时间 bool touch

C# 文件操作(上传 下载 删除 文件列表...)

上传|下载 using System.IO; 1.文件上传----------如下要点:HTML部分:<form id="form1" runat="server" method="post" enctype="multipart/form-data"><input id="FileUpLoad" type="file" runat="server"

applet实现大文件FTP上传下载的功能

问题描述 packageyp;importjava.applet.Applet;importjava.io.File;importjavax.swing.JButton;importjavax.swing.JFileChooser;importjavax.swing.filechooser.FileFilter;/***说明:本APPLET只是测试大文件FTP上传可行性*至于其他功能比如FTP下载.删除.FTP服务器文件列表可调用ContinueFTP相应功能.*/publicclassFile

asp.net文件图片上传带预览效果

asp教程.net文件图片上传带预览效果 图片预览主要包括两个部分:从file表单控件获取图像数据,根据数据显示预览图像. 程序的file和img属性就是用来保存file控件和显示预览图像的容器的,而img还必须是img元素. 程序有以下几种预览方式: simple模式:直接从file的value获取图片路径来显示预览,适用于ie6: filter模式:通过selection获取file的图片路径,再用滤镜来显示预览,适用于ie7/8: domfile模式:调用file的getAsDataURL

怎么样用JAVA 实现文件的上传下载?

问题描述 哪位高手帮帮忙,我现在需要用eclipse7.1开发一个小模块,里面需要有上传下载功能,(例如上传一个word文档,下载文档)哪为高手告诉我应该怎么做?越详细越好.用的服务器是tomcat5. 解决方案 解决方案二:哦11111知道了解决方案三:数据库用的Oracle9i.谢谢了~~急求!解决方案四:这个好难的类解决方案五:使用或参考smartupload.jar解决方案六:struts里面不是有包含文件上传的功能吗FormFile解决方案七:我就知道要用到这个插件JSPSmart,具