今天我们讲解如何利用asp的上传功能将本地的文件上传到服务器上。
最简系统包括下面三个文件:
upload.htm --上传口文件,选择本地文件
uploadimg.asp --上传程序控制文件
upload_5xsoft.inc --无组件上传类,此文件初学者不用学习,只要会用就可以了
upload.htm内容————上传口文件,选择本地文件
<html> <head> </head> <body> <table width=\"80%\" border=\"0\" align=\"center\"> <form name=\"form1\" method=\"post\" action=\"uploadimg.asp\" enctype=\"multipart/form-data\"> <tr> <td align=\"center\"><input name=\"upfile\" type=\"file\" id=\"upfile\"></td> </tr> <tr> <td align=\"center\"><input type=\"submit\" name=\"Submit\" value=\"上传图片\"></td> </tr> </form> </table> </body> </html>
uploadimg.asp内容————上传程序控制文件
<!--#include FILE=\"upload_5xsoft.inc\"--> <% dim upload,file,filepath filepath=\"UPLOAD/\" set upload=new upload_5xSoft \'\'建立上传对象 for each formName in upload.file \'\'列出所有上传了的文件 set file=upload.file(formName) \'\'生成一个文件对象 if file.FileSize>0 then \'\'如果 FileSize > 0 说明有文件数据 fname = file.filename file.SaveAs Server.mappath(filepath&fname) \'\'保存文件 end if set file=nothing next set upload=nothing \'\'删除此对象
upload_5xsoft.inc内容————此文件内容不属于本演练程序内容,本演练应用此类的方法
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> dim oUpFileStream Class upload_5xSoft dim Form,File,Version Private Sub Class_Initialize dim RequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo dim iFileSize,sFilePath,sFileType,sFormvalue,sFileName dim iFindStart,iFindEnd dim iFormStart,iFormEnd,sFormName Version=\"无组件上传类 Version 0.93\" set Form=Server.CreateObject(\"Scripting.Dictionary\") set File=Server.CreateObject(\"Scripting.Dictionary\") if Request.TotalBytes<1 then Exit Sub 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) Response.Write \"<font size=\"\"2\"\">页面执行时间:\"&FormatNumber((Timer() -time1)*1000,3)&\"毫秒</font><br>\" oUpFileStream.Position=0 RequestBinDate =oUpFileStream.Read iFormStart = 1 iFormEnd = LenB(RequestBinDate) bCrLf = chrB(13) & chrB(10) sStart = MidB(RequestBinDate,1, InStrB(iFormStart,RequestBinDate,bCrLf)-1) iStart = LenB (sStart) iFormStart=iFormStart+iStart+1 while (iFormStart + 10) < iFormEnd iInfoEnd = InStrB(iFormStart,RequestBinDate,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,RequestBinDate,sStart) 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 FileInfo \'取得文件名 iFindStart = InStr(iFindEnd,sInfo,\"filename=\"\"\",1)+10 iFindEnd = InStr(iFindStart,sInfo,\"\"\"\",1) sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart) oFileInfo.FileName=getFileName(sFileName) oFileInfo.FilePath=getFilePath(sFileName) \'取得文件类型 iFindStart = InStr(iFindEnd,sInfo,\"Content-Type: \",1)+14 iFindEnd = InStr(iFindStart,sInfo,vbCr) oFileInfo.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart) oFileInfo.FileStart =iInfoEnd oFileInfo.FileSize = iFormStart -iInfoEnd -3 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-3 tStream.Position = 0 tStream.Type = 2 tStream.Charset =\"gb2312\" sFormvalue = tStream.ReadText form.Add sFormName,sFormvalue end if tStream.Close iFormStart=iFormStart+iStart+1 wend RequestBinDate=\"\" set tStream =nothing End Sub Private Sub Class_Terminate if not Request.TotalBytes<1 then form.RemoveAll file.RemoveAll set form=nothing set file=nothing oUpFileStream.Close set oUpFileStream =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 Class Class 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 oFileStream,ErrorChar,i SaveAs=1 if trim(fullpath)=\"\" or right(fullpath,1)=\"/\" then exit function set oFileStream=CreateObject(\"Adodb.Stream\") oFileStream.Type=1 oFileStream.Mode=3 oFileStream.Open oUpFileStream.position=FileStart oUpFileStream.copyto oFileStream,FileSize oFileStream.SaveToFile FullPath,2 oFileStream.Close set oFileStream=nothing SaveAs=0 end function End Class </SCRIPT>
此文所诉的内容是上传文件的最简化程式,请朋友们自己分析一下,学会本演练,asp一般的上传功能就基本掌握了
本文地址:https://www.stayed.cn/item/15716
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我