如果你想把自己機器的圖片或檔案放到伺服器上該怎麼辦呢? 可選有三種辦法1、ftp上傳,2、用u盤拷貝到伺服器上,3、如果伺服器支援asp上傳功能,用網頁瀏覽器將文件上傳到伺服器。
今天我們來講解如何利用asp的上傳功能將本機的檔案上傳到伺服器。
最簡系統包括下面三個文件:
upload.htm --上傳口文件,選擇本機檔案uploadimg.asp --上傳程式控製檔案upload_5xsoft.inc --無元件上傳類,此檔案初學者不用學習,只要會用就可以了
upload.htm內容--上傳口文件,選擇本機文件
- <html>
- <head>
- </head>
- <body>
- <tablewidth=80%border=0align=center>
- <formname=form1method=postaction=uploadimg.aspenctype=multipart/form-data>
- <tr>
- <tdalign=center><inputname=upfiletype=fileid=upfile></td>
- </tr>
- <tr>
- <tdalign=center><inputtype=submitname=Submitvalue=上傳圖片></td>
- </tr>
- </form>
- </table>
- </body>
- </html>
uploadimg.asp內容--上傳程式控製文件
- <!--#includeFILE=upload_5xsoft.inc-->
- <%
- dimupload,file,filepath
- filepath=UPLOAD/
- setupload=newupload_5xSoft''建立上傳對象
- foreachformNameinupload.file''列出所有上傳了的文件
- setfile=upload.file(formName)''產生一個文件對象
- iffile.FileSize>0then''如果FileSize>0說明有檔案數據
- fname=file.filename
- file.SaveAsServer.mappath(filepath&fname)''儲存文件
- endif
- setfile=nothing
- next
- setupload=nothing''刪除此對象
upload_5xsoft.inc內容
--此文件內容不屬於本演練程序內容,本演練應用此類的方法
- <SCRIPTRUNAT=SERVERLANGUAGE=VBSCRIPT>
- dimoUpFileStream
- Classupload_5xSoft
- dimForm,File,Version
- PrivateSubClass_Initialize
- dimRequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
- dimiFileSize,sFilePath,sFileType,sFormvalue,sFileName
- dimiFindStart,iFindEnd
- dimiFormStart,iFormEnd,sFormName
- Version=無元件上傳類別Version0.93
- setForm=Server.CreateObject(Scripting.Dictionary)
- setFile=Server.CreateObject(Scripting.Dictionary)
- ifRequest.TotalBytes<1thenExitSub
- settStream=Server.CreateObject(adodb.stream)
- setoUpFileStream=Server.CreateObject(adodb.stream)
- oUpFileStream.Type=1
- oUpFileStream.Mode=3
- oUpFileStream.Open
- oUpFileStream.WriteRequest.BinaryRead(Request.TotalBytes)
- Response.Write<fontsize=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.CopyTotStream,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)
- '如果是文件
- ifInStr(45,sInfo,filename=,1)>0then
- setoFileInfo=newFileInfo
- '取得檔案名稱
- 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.addsFormName,oFileInfo
- else
- '如果是表單項目
- tStream.Close
- tStream.Type=1
- tStream.Mode=3
- tStream.Open
- oUpFileStream.Position=iInfoEnd
- oUpFileStream.CopyTotStream,iFormStart-iInfoEnd-3
- tStream.Position=0
- tStream.Type=2
- tStream.Charset=gb2312
- sFormvalue=tStream.ReadText
- form.AddsFormName,sFormvalue
- endif
- tStream.Close
- iFormStart=iFormStart+iStart+1
- wend
- RequestBinDate=
- settStream=nothing
- EndSub
- PrivateSubClass_Terminate
- ifnotRequest.TotalBytes<1then
- form.RemoveAll
- file.RemoveAll
- setform=nothing
- setfile=nothing
- oUpFileStream.Close
- setoUpFileStream=nothing
- endif
- EndSub
- PrivatefunctionGetFilePath(FullPath)
- IfFullPath<>Then
- GetFilePath=left(FullPath,InStrRev(FullPath,))
- Else
- GetFilePath=
- EndIf
- Endfunction
- PrivatefunctionGetFileName(FullPath)
- IfFullPath<>Then
- GetFileName=mid(FullPath,InStrRev(FullPath,)+1)
- Else
- GetFileName=
- EndIf
- Endfunction
- EndClass
- ClassFileInfo
- dimFormName,FileName,FilePath,FileSize,FileType,FileStart
- PrivateSubClass_Initialize
- FileName=
- FilePath=
- FileSize=0
- FileStart=0
- FormName=
- FileType=
- EndSub
- PublicfunctionSaveAs(FullPath)
- dimoFileStream,ErrorChar,i
- SaveAs=1
- iftrim(fullpath)=orright(fullpath,1)=/thenexitfunction
- setoFileStream=CreateObject(Adodb.Stream)
- oFileStream.Type=1
- oFileStream.Mode=3
- oFileStream.Open
- oUpFileStream.position=FileStart
- oUpFileStream.copytooFileStream,FileSize
- oFileStream.SaveToFileFullPath,2
- oFileStream.Close
- setoFileStream=nothing
- SaveAs=0
- endfunction
- EndClass
- </SCRIPT>
此文所訴的內容是上傳文件的最簡化程序,請朋友們自己分析一下,學會本演練,asp一般的上傳功能就基本掌握了