應用最簡單的 asp上傳文件實例
如果你想把自己機器的圖片或者文件放到服務器上該怎麼辦呢?
2 用 u 盤拷貝到服務器上,可選有三種辦法 1 ftp 上傳。 3 如果服務器支持 asp 上傳功能,用網頁瀏覽器將文件上傳到服務器上。
今天我講解如何利用 asp 上傳功能將本地的文件上傳到服務器上。
源代碼在附件裏
最簡系統包括下面三個文件
選擇外地文件 upload.htm -- 上傳口文件。
uploadimg.asp -- 上傳順序控制文件
此文件初學者不用學習,upload_5xsoft.inc -- 無組件上傳類。只要會用就可以了
****************************
upload.htm 內容
*********
<html>
<head>
</head>
<body>
<t 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 內容
*********
<!--#includ FILE="upload_5xsoft.inc"-->
<%
file,dim upload.filepath
filepath="UPLOAD/"
set upload=new upload_5xSoft '' 建立上傳對象
for each formNam in upload.fil '' 列出所有上傳了文件
set file=upload.fil formNam '' 生成一個文件對象
if file.FileSize>0 then '' 如果 FileS > 0 說明有文件數據
fname = file.filename
file.SaveA Server.mappath filepath&fnam '' 保管文件
end if
set file=nothing
next
set upload=nothing '' 刪除此對象
********************************
本演練應用此類的方法 upload_5xsoft.inc 內容 -- 此文件內容不屬於本演練順序內容。
*********
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
dim oUpFileStream
Class upload_5xSoft
File,dim Form.Version
Privat Sub Class_Initi
sStart,dim RequestBinDate.bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
sFilePath,dim iFileSize.sFileType,sFormvalue,sFileName
iFindEndim iFindStart.d
iFormEnd,dim iFormStart.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.Typ = 1
oUpFileStream.Mod =3
oUpFileStream.Open
oUpFileStream.Write Request.BinaryRead Request.TotalByt
3 &" 毫秒 </font><br>Response.Write "<font size=""2""> 頁面執行時間: "&FormatNumb Timer -time1 *1000."
oUpFileStream.Position=0
RequestBinD =oUpFileStream.Read
iFormStart = 1
iFormEnd = LenB RequestBinD
bCrLf = chrB 13 & chrB 10
1,sStart = MidB RequestBinDate. InStrB iFormStart,RequestBinDate,bCrLf -1
iStart = LenB sStart
iFormStart=iFormStart+iStart+1
whil iFormStart + 10 < iFormEnd
RequestBinDate, iInfoEnd = InStrB iFormStart.bCrLf & bCrLf +3
tStream.Typ = 1
tStream.Mod =3
tStream.Open
oUpFileStream.Posit = iFormStart
iInfoEnd-iFormStar oUpFileStream.CopyTo tStream.t
tStream.Posit = 0
tStream.Typ = 2
tStream.Charset ="gb2312"
sInfo = tStream.ReadText
' 取得表單項目名稱
RequestBinDate, iFormStart = InStrB iInfoEnd.sStart
sInfo, iFindStart = InStr 22."name=""",1 +6
sInfo, iFindEnd = InStr iFindStart."""",1
iFindStart, sFormNam = Mid sinfo.iFindEnd-iFindStart
' 如果是文件
sInfo, if InStr 45."filename=""",1 > 0 then
set oFileInfo=new FileInfo
' 取得文件名
sInfo, iFindStart = InStr iFindEnd."filename=""",1 +10
sInfo, iFindEnd = InStr iFindStart."""",1
iFindStart, sFileNam = Mid sinfo.iFindEnd-iFindStart
oFileInfo.FileName=getFileNam sFileNam
oFileInfo.FilePath=getFilePath sFileNam
' 取得文件類型
sInfo, iFindStart = InStr iFindEnd."Content-Type: ",1 +14
sInfo, iFindEnd = InStr iFindStart.vbCr
iFindStart, oFileInfo.FileTyp =Mid sinfo.iFindEnd-iFindStart
oFileInfo.FileStart =iInfoEnd
oFileInfo.FileS = iFormStart -iInfoEnd -3
oFileInfo.FormName=sFormName
oFileInf file.add sFormName.o
else
' 如果是表單項目
tStream.Close
tStream.Typ =1
tStream.Mod =3
tStream.Open
oUpFileStream.Posit = iInfoEnd
iFormStart-iInfoEnd- oUpFileStream.CopyTo tStream.3
tStream.Posit = 0
tStream.Typ = 2
tStream.Charset ="gb2312"
sFormvalu = tStream.ReadText
sFormvalu form.Add sFormName.e
end if
tStream.Close
iFormStart=iFormStart+iStart+1
wend
RequestBinDate=""
set tStream =nothing
End Sub
Priv 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
Privat function GetFilePath FullPath
If FullPath <> "" Then
InStrRev FullPath, GetFilePath = left FullPath. ""
Else
GetFilePath = ""
End If
End function
Priv function GetFileNam FullPath
If FullPath <> "" Then
InStrRev FullPath, GetFileNam = mid FullPath. "" +1
Else
GetFileNam = ""
End If
End function
End Class
Class FileInfo
FileName, dim FormName.FilePath,FileSize,FileType,FileStart
Privat Sub Class_Initi
FileNam = ""
FilePath = ""
FileS = 0
FileStart= 0
FormNam = ""
FileTyp = ""
End Sub
Public function SaveA FullPath
ErrorChar, dim oFileStream.i
SaveAs=1
1 ="/" then exit functio if trim fullpath ="" or right fullpath.n
set oFileStream=CreateObject "Adodb.Stream"
oFileStream.Type=1
oFileStream.Mode=3
oFileStream.Open
oUpFileStream.position=FileStart
FileSiz oUpFileStream.copyto oFileStream.e
oFileStream.SaveToFil FullPath.2
oFileStream.Close
set oFileStream=noth
SaveAs=0
end function
End Class
</SCRIPT>
************************
和附件裏的內容有所不同,此文所訴的內容是上傳文件的最簡化程式。附件的源代碼加入了一些檢測函數和獲取普通表單的方法 upload.form 不過核心完全一樣,請朋友們自己分析一下,學會本演練, asp 一般的上傳功能就基本掌握了