asp将本地的文件上传到服务器

前端技术 2023/09/06 .NET

今天我们讲解如何利用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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。