应用最简单的 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 一般的上传功能就基本掌握了