==============================================
一共有三个文件,文件名分别是:upfile.html,upfile.asp,upload_5xsoft.inc
文件的源代码分别如下,你只需要将他们粘贴到写字板中,分别存储为上述的文件
名就可以了:
1:upfile.html
******************************************************************8
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
td {  font-size: 9pt}
a {  color: #000000; text-decoration: none}
a:hover {  text-decoration: underline}
.tx {  height: 16px; width: 30px; border-color: black black #000000; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; font-size: 9pt; background-color: #eeeeee; color: #0000FF}
.bt {  font-size: 9pt; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; height: 16px; width: 80px; background-color: #eeeeee; cursor: hand}
.tx1 { height: 20px; width: 30px; font-size: 9pt; border: 1px solid; border-color: black black #000000; color: #0000FF}
-->
</style>
</head><body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="upfile.asp" enctype="multipart/form-data" >
 <table border="1" cellspacing="0" cellpadding="0" bordercolorlight="#000000" bordercolordark="#CCCCCC" width="91" height="23">
   <tr> 
     <td align="left" valign="middle" height="18" width="18"> </td>
     <td bgcolor="#CCCCCC" align="left" valign="middle" height="18" width="67"> 文件上传</td>
   </tr>
 </table>
 您的上传目录是:/example/file,一次上传的文件大小不能大于5M,文件上传正在测试中.....
 <br>
 <input type="hidden" name="act" value="upload">
 <br>
 <table width="71%" border="1" cellspacing="0" cellpadding="5" align="center" bordercolordark="#CCCCCC" bordercolorlight="#000000">
   <tr bgcolor="#CCCCCC"> 
     <td height="22" align="left" valign="middle" bgcolor="#CCCCCC"> 文件上传</td>
   </tr>
   <tr align="left" valign="middle" bgcolor="#eeeeee"> 
     <td bgcolor="#eeeeee" height="92"> 
       <script language="javascript">
   function setid()
   {
   str='<br>';
   if(!window.form1.upcount.value)
    window.form1.upcount.value=1;
   for(i=1;i<=window.form1.upcount.value;i++)
      str+='文件'+i+':<input type="file" name="file'+i+'" style="width:400" class="tx1"><br><br>';
   window.upid.innerHTML=str+'<br>';
   }
   </script>
       <li> 需要上传的个数 
         <input type="text" name="upcount" class="tx" value="1">
         <input type="button" name="Button" class="bt" onclick="setid();" value="· 设定 ·">
       </li>
       <br>
       <br>
       <li>上传到: 
         <input type="text" name="filepath" class="tx" style="width:350" value="/example/file">
       </li>
     </td>
   </tr>
   <tr align="center" valign="middle"> 
     <td align="left" id="upid" height="122"> 文件1: 
       <input type="file" name="file1" style="width:400" class="tx1" value="">
     </td>
   </tr>
   <tr align="center" valign="middle" bgcolor="#eeeeee"> 
     <td bgcolor="#eeeeee" height="24"> 
       <input type="submit" name="Submit" value="· 提交 ·" class="bt">
       <input type="reset" name="Submit2" value="· 重新执行 ·" class="bt">
     </td>
   </tr>
 </table>
</form>
</body>
</html>
<script language="javascript">setid();
</script>

解决方案 »

  1.   

    ****************************************************************************
    2:upfile.asp
    ****************************************************************************
    <%OPTION EXPLICIT%>
    <!--#include FILE="upload_5xsoft.inc"-->
    <html>
    <head>
    <title>文件上传</title>
    </head>
    <body>
    <%
    dim upload,file,formName,formPath,iCountServer.ScriptTimeout=5000set upload=new upload_5xSoft ''建立上传对象if upload.form("filepath")="" then   ''得到上传目录
    HtmEnd "请输入要上传至的目录!"
    set upload=nothing
    response.end
    else
    formPath=upload.form("filepath")
    ''在目录后加(/)
    if right(formPath,1)<>"/" then formPath=formPath&"/" 
    end ifiCount=0
    for each formName in upload.file ''列出所有上传了的文件
    set file=upload.file(formName)  ''生成一个文件对象
    if file.FileSize>0 then         ''如果 FileSize > 0 说明有文件数据
     file.SaveAs Server.mappath(formPath&file.FileName)   ''保存文件
     response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!<br>"
     iCount=iCount+1
    end if
    set file=nothing
    next
    set upload=nothing  ''删除此对象
    Htmend iCount&" 个文件上传结束!"sub HtmEnd(Msg)
    set upload=nothing
    response.write "<br>"&Msg&" [<a href=""javascript:history.back();"">返回</a>] [<a href=list.asp>文件列表</a>]</body></html>"
    response.end
    end sub
    %>
    </body>
    </html>
    ****************************************************************************
    3:upload_5xsoft.inc
    ****************************************************************************
    <SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>dim upfile_5xSoft_StreamClass upload_5xSoft
     
    dim Form,File,Version
     
    Private Sub Class_Initialize 
    dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
    dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
    Version="HTTP上传程序 Version 1.0"
    if Request.TotalBytes<1 then Exit Sub
    set Form=CreateObject("Scripting.Dictionary")
    set File=CreateObject("Scripting.Dictionary")
    set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")
    upfile_5xSoft_Stream.mode=3
    upfile_5xSoft_Stream.type=1
    upfile_5xSoft_Stream.open
    upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)vbEnter=Chr(13)&Chr(10)
    iDivLen=inString(1,vbEnter)+1
    strDiv=subString(1,iDivLen)
    iFormStart=iDivLen
    iFormEnd=inString(iformStart,strDiv)-1
    while iFormStart < iFormEnd
     iStart=inString(iFormStart,"name=""")
     iEnd=inString(iStart+6,"""")
     mFormName=subString(iStart+6,iEnd-iStart-6)
     iFileNameStart=inString(iEnd+1,"filename=""")
     if iFileNameStart>0 and iFileNameStart<iFormEnd then
      iFileNameEnd=inString(iFileNameStart+10,"""")
      mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
      iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
      iEnd=inString(iStart+4,vbEnter&strDiv)
      if iEnd>iStart then
       mFileSize=iEnd-iStart-4
      else
       mFileSize=0
      end if
      set theFile=new FileInfo
      theFile.FileName=getFileName(mFileName)
      theFile.FilePath=getFilePath(mFileName)
      theFile.FileSize=mFileSize
      theFile.FileStart=iStart+4
      theFile.FormName=FormName
      file.add mFormName,theFile
     else
      iStart=inString(iEnd+1,vbEnter&vbEnter)
      iEnd=inString(iStart+4,vbEnter&strDiv)  if iEnd>iStart then
       mFormValue=subString(iStart+4,iEnd-iStart-4)
      else
       mFormValue="" 
      end if
      form.Add mFormName,mFormValue
     end if iFormStart=iformEnd+iDivLen
     iFormEnd=inString(iformStart,strDiv)-1
    wend
    End SubPrivate Function subString(theStart,theLen)
    dim i,c,stemp
    upfile_5xSoft_Stream.Position=theStart-1
    stemp=""
    for i=1 to theLen
      if upfile_5xSoft_Stream.EOS then Exit for
      c=ascB(upfile_5xSoft_Stream.Read(1))
      If c > 127 Then
       if upfile_5xSoft_Stream.EOS then Exit for
       stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
       i=i+1
      else
       stemp=stemp&Chr(c)
      End If
    Next
    subString=stemp
    End functionPrivate Function inString(theStart,varStr)
    dim i,j,bt,theLen,str
    InString=0
    Str=toByte(varStr)
    theLen=LenB(Str)
    for i=theStart to upfile_5xSoft_Stream.Size-theLen
      if i>upfile_5xSoft_Stream.size then exit Function
      upfile_5xSoft_Stream.Position=i-1
      if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then
       InString=i
       for j=2 to theLen
         if upfile_5xSoft_Stream.EOS then 
           inString=0
           Exit for
         end if
         if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
           InString=0
           Exit For
         end if
       next
       if InString<>0 then Exit Function
      end if
    next
    End FunctionPrivate Sub Class_Terminate  
     form.RemoveAll
     file.RemoveAll
     set form=nothing
     set file=nothing
     upfile_5xSoft_Stream.close
     set upfile_5xSoft_Stream=nothing
    End Sub
      Private function GetFilePath(FullPath)
     If FullPath <> "" Then
      GetFilePath = left(FullPath,InStrRev(FullPath, "\"))
     Else
      GetFilePath = ""
     End If
    End  functionPrivate function GetFileName(FullPath)
     If FullPath <> "" Then
      GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
     Else
      GetFileName = ""
     End If
    End  functionPrivate function toByte(Str)
      dim i,iCode,c,iLow,iHigh
      toByte=""
      For i=1 To Len(Str)
      c=mid(Str,i,1)
      iCode =Asc(c)
      If iCode<0 Then iCode = iCode + 65535
      If iCode>255 Then
        iLow = Left(Hex(Asc(c)),2)
        iHigh =Right(Hex(Asc(c)),2)
        toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
      Else
        toByte = toByte & chrB(AscB(c))
      End If
      Next
    End function
    End Class
    Class FileInfo
     dim FormName,FileName,FilePath,FileSize,FileStart
     Private Sub Class_Initialize 
       FileName = ""
       FilePath = ""
       FileSize = 0
       FileStart= 0
       FormName = ""
     End Sub
     
    Public function SaveAs(FullPath)
       dim dr,ErrorChar,i
       SaveAs=1
       if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
       if FileStart=0 or right(fullpath,1)="/" then exit function
       set dr=CreateObject("Adodb.Stream")
       dr.Mode=3
       dr.Type=1
       dr.Open
       upfile_5xSoft_Stream.position=FileStart-1
       upfile_5xSoft_Stream.copyto dr,FileSize
       dr.SaveToFile FullPath,2
       dr.Close
       set dr=nothing 
       SaveAs=0
     end function
    End Class
    </SCRIPT>