ASP上传文件

最简asp上传文件实例 
附件: 
shangchuan.rar(13K, 下载次数:
490)
    
 
  如果你想把自己机器的图片或者文件放到服务器上该怎么办呢?
可选有三种办法1、ftp上传,
2、用u盘拷贝到服务器上,3、如果服务器支持asp上传功能,用网页浏览器将文件上传到服务器上。
今天我们讲解如何利用asp的上传功能将本地的文件上传到服务器上。
测试地址:http:
//www.eyetao.com/lession/shangchuan/index.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>
************************
此文所诉的内容是上传文件的最简化程式,和附件里的内容有所不同,附件的源代码加入了一些检测函数和获取普通表单的方法upload.form(),不过核心完全一样,请朋友们自己分析一下,学会本演练,asp一般的上传功能就基本掌握了

 
 
 
 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值