upload_5xsoft.inc
< SCRIPT RUNAT = SERVER LANGUAGE = VBSCRIPT > dim Data_5xsoftClass upload_5xsoft dim objForm,objFile,Version Public function Form(strForm) strForm = lcase (strForm) if not objForm.exists(strForm) then Form = "" else Form = objForm(strForm) end if end function Public function File(strFile) strFile = lcase (strFile) if not objFile.exists(strFile) then set File = new FileInfo else set File = objFile(strFile) end if end function Private Sub Class_Initialize dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile dim iFileSize,sFilePath,sFileType,sFormValue,sFileName dim iFindStart,iFindEnd dim iFormStart,iFormEnd,sFormName Version = " 化境HTTP上传程序 Version 2.0 " set objForm = Server.CreateObject( " Scripting.Dictionary " ) set objFile = Server.CreateObject( " Scripting.Dictionary " ) if Request.TotalBytes < 1 then Exit Sub set tStream = Server.CreateObject( " adodb.stream " ) set Data_5xsoft = Server.CreateObject( " adodb.stream " ) Data_5xsoft.Type = 1 Data_5xsoft.Mode = 3 Data_5xsoft.Open Data_5xsoft.Write Request.BinaryRead(Request.TotalBytes) Data_5xsoft.Position = 0 RequestData = Data_5xsoft.Read iFormStart = 1 iFormEnd = LenB(RequestData) vbCrlf = chrB( 13 ) & chrB( 10 ) sStart = MidB(RequestData, 1 , InStrB(iFormStart,RequestData,vbCrlf) - 1 ) iStart = LenB (sStart) iFormStart = iFormStart + iStart + 1 while (iFormStart + 10 ) < iFormEnd iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf) + 3 tStream.Type = 1 tStream.Mode = 3 tStream.Open Data_5xsoft.Position = iFormStart Data_5xsoft.CopyTo tStream,iInfoEnd - iFormStart tStream.Position = 0 tStream.Type = 2 tStream.Charset = " gb2312 " sInfo = tStream.ReadText tStream.Close ' 取得表单项目名称 iFormStart = InStrB(iInfoEnd,RequestData,sStart) iFindStart = InStr ( 22 ,sInfo, " name="" " , 1 ) + 6 iFindEnd = InStr (iFindStart,sInfo, " "" " , 1 ) sFormName = lcase ( Mid (sinfo,iFindStart,iFindEnd - iFindStart)) ' 如果是文件 if InStr ( 45 ,sInfo, " filename="" " , 1 ) > 0 then set theFile = new FileInfo ' 取得文件名 iFindStart = InStr (iFindEnd,sInfo, " filename="" " , 1 ) + 10 iFindEnd = InStr (iFindStart,sInfo, " "" " , 1 ) sFileName = Mid (sinfo,iFindStart,iFindEnd - iFindStart) theFile.FileName = getFileName(sFileName) theFile.FilePath = getFilePath(sFileName) ' 取得文件类型 iFindStart = InStr (iFindEnd,sInfo, " Content-Type: " , 1 ) + 14 iFindEnd = InStr (iFindStart,sInfo,vbCr) theFile.FileType = Mid (sinfo,iFindStart,iFindEnd - iFindStart) theFile.FileStart = iInfoEnd theFile.FileSize = iFormStart - iInfoEnd - 3 theFile.FormName = sFormName if not objFile.Exists(sFormName) then objFile.add sFormName,theFile end if else ' 如果是表单项目 tStream.Type = 1 tStream.Mode = 3 tStream.Open Data_5xsoft.Position = iInfoEnd Data_5xsoft.CopyTo tStream,iFormStart - iInfoEnd - 3 tStream.Position = 0 tStream.Type = 2 tStream.Charset = " gb2312 " sFormValue = tStream.ReadText tStream.Close if objForm.Exists(sFormName) then objForm(sFormName) = objForm(sFormName) & " , " & sFormValue else objForm.Add sFormName,sFormValue end if end if iFormStart = iFormStart + iStart + 1 wend RequestData = "" set tStream = nothing End Sub Private Sub Class_Terminate if Request.TotalBytes > 0 then objForm.RemoveAll objFile.RemoveAll set objForm = nothing set objFile = nothing Data_5xsoft.Close set Data_5xsoft = nothing end if End Sub Private function GetFilePath(FullPath) If FullPath <> "" Then GetFilePath = left (FullPath, InStrRev (FullPath, " " )) Else GetFilePath = "" End If End function Private function GetFileName(FullPath) If FullPath <> "" Then GetFileName = mid (FullPath, InStrRev (FullPath, " " ) + 1 ) Else GetFileName = "" End If End function End ClassClass FileInfo dim FormName,FileName,FilePath,FileSize,FileType,FileStart Private Sub Class_Initialize FileName = "" FilePath = "" FileSize = 0 FileStart = 0 FormName = "" FileType = "" End Sub Public function SaveAs(FullPath) dim dr,ErrorChar,i SaveAs = true if trim (fullpath) = "" or FileStart = 0 or FileName = "" or right (fullpath, 1 ) = " / " then exit function set dr = CreateObject ( " Adodb.Stream " ) dr.Mode = 3 dr.Type = 1 dr.Open Data_5xsoft.position = FileStart Data_5xsoft.copyto dr,FileSize dr.SaveToFile FullPath, 2 dr.Close set dr = nothing SaveAs = false end function End Class </ SCRIPT >2. upload.htm
< html >< title > example </ title > < body > < form name ="form1" method ="post" action ="upload.asp" enctype ="multipart/form-data" > < input type =file name ="file1" >< br > user: < input type ="text" name ="userName" > < input type =submit name ="submit" value ="提交" > </ form > </ body > </ html >3. upload.asp
< html >< title > example </ title > < body > < ! -- #include FILE = " upload_5xsoft.inc " --> < % set upload = new upload_5xsoft set file = upload.file( " file1 " ) ' file1 表单名称 username = upload.form( " userName " ) ' 用户名 response.Write( " username= " & username) ' response.End() response.write upload.form( " submit " ) & " <br> " if file.fileSize > 0 then file.saveAs Server.mappath( " temp.jpg " ) response.write " <br>上传文件: " & file.FileName & " => temp.jpg OK! " response.write " <br>文件大小: " & file.FileSize end if set file = nothing set upload = nothing % ></ body > </ html >取表单的值
username = upload.form("userName") '用户名 去表单的值