★哪位大虾给写一个简单的无组件图片上传的例子

不要以二进制流写入数据库的,想要提交同时将文件copy到某一文件夹,同时将文件名
写入数据库的。3Qs for answer:)
---------------------------------------------------------------

  1<script language="VBSCRIPT" runat="SERVER">   
  2  
  3dim upfile_the_Stream   
  4  
  5Class upload_file   
  6  
  7dim Form,File,Version   
  8  
  9Private Sub Class_Initialize   
 10dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile   
 11dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr   
 12Version="HTTP上传程序 版本 1.0"   
 13if Request.TotalBytes<1 then Exit Sub   
 14set Form=CreateObject("Scripting.Dictionary")   
 15set File=CreateObject("Scripting.Dictionary")   
 16set upfile_the_Stream=CreateObject("Adodb.Stream")   
 17upfile_the_Stream.mode=3   
 18upfile_the_Stream.type=1   
 19upfile_the_Stream.open   
 20upfile_the_Stream.write Request.BinaryRead(Request.TotalBytes)   
 21  
 22vbEnter=Chr(13)&Chr(10)   
 23iDivLen=inString(1,vbEnter)+1   
 24strDiv=subString(1,iDivLen)   
 25iFormStart=iDivLen   
 26iFormEnd=inString(iformStart,strDiv)-1   
 27while iFormStart < iFormEnd   
 28iStart=inString(iFormStart,"name=""")   
 29iEnd=inString(iStart+6,"""")   
 30mFormName=subString(iStart+6,iEnd-iStart-6)   
 31iFileNameStart=inString(iEnd+1,"filename=""")   
 32if iFileNameStart>0 and iFileNameStart<iFormEnd then   
 33iFileNameEnd=inString(iFileNameStart+10,"""")   
 34mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)   
 35iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)   
 36iEnd=inString(iStart+4,vbEnter&strDiv)   
 37if iEnd>iStart then   
 38mFileSize=iEnd-iStart-4   
 39else   
 40mFileSize=0   
 41end if   
 42set theFile=new FileInfo   
 43theFile.FileName=getFileName(mFileName)   
 44theFile.FilePath=getFilePath(mFileName)   
 45theFile.FileSize=mFileSize   
 46theFile.FileStart=iStart+4   
 47theFile.FormName=FormName   
 48file.add mFormName,theFile   
 49else   
 50iStart=inString(iEnd+1,vbEnter&vbEnter)   
 51iEnd=inString(iStart+4,vbEnter&strDiv)   
 52  
 53if iEnd>iStart then   
 54mFormValue=subString(iStart+4,iEnd-iStart-4)   
 55else   
 56mFormValue=""   
 57end if   
 58form.Add mFormName,mFormValue   
 59end if   
 60  
 61iFormStart=iformEnd+iDivLen   
 62iFormEnd=inString(iformStart,strDiv)-1   
 63wend   
 64End Sub   
 65  
 66Private Function subString(theStart,theLen)   
 67dim i,c,stemp   
 68upfile_the_Stream.Position=theStart-1   
 69stemp=""   
 70for i=1 to theLen   
 71if upfile_the_Stream.EOS then Exit for   
 72c=ascB(upfile_the_Stream.Read(1))   
 73If c > 127 Then   
 74if upfile_the_Stream.EOS then Exit for   
 75stemp=stemp&Chr(AscW(ChrB(AscB(upfile_the_Stream.Read(1)))&ChrB(c)))   
 76i=i+1   
 77else   
 78stemp=stemp&Chr(c)   
 79End If   
 80Next   
 81subString=stemp   
 82End function   
 83  
 84Private Function inString(theStart,varStr)   
 85dim i,j,bt,theLen,str   
 86InString=0   
 87Str=toByte(varStr)   
 88theLen=LenB(Str)   
 89for i=theStart to upfile_the_Stream.Size-theLen   
 90if i>upfile_the_Stream.size then exit Function   
 91upfile_the_Stream.Position=i-1   
 92if AscB(upfile_the_Stream.Read(1))=AscB(midB(Str,1)) then   
 93InString=i   
 94for j=2 to theLen   
 95if upfile_the_Stream.EOS then   
 96inString=0   
 97Exit for   
 98end if   
 99if AscB(upfile_the_Stream.Read(1))<>AscB(MidB(Str,j,1)) then   
100InString=0   
101Exit For   
102end if   
103next   
104if InString<>0 then Exit Function   
105end if   
106next   
107End Function   
108  
109Private Sub Class_Terminate   
110form.RemoveAll   
111file.RemoveAll   
112set form=nothing   
113set file=nothing   
114upfile_the_Stream.close   
115set upfile_the_Stream=nothing   
116End Sub   
117  
118  
119Private function GetFilePath(FullPath)   
120If FullPath <> "" Then   
121GetFilePath = left(FullPath,InStrRev(FullPath, "\"))   
122Else   
123GetFilePath = ""   
124End If   
125End function   
126  
127Private function GetFileName(FullPath)   
128If FullPath <> "" Then   
129GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)   
130Else   
131GetFileName = ""   
132End If   
133End function   
134  
135Private function toByte(Str)   
136dim i,iCode,c,iLow,iHigh   
137toByte=""   
138For i=1 To Len(Str)   
139c=mid(Str,i,1)   
140iCode =Asc(c)   
141If iCode<0 Then iCode = iCode + 65535   
142If iCode>255 Then   
143iLow = Left(Hex(Asc(c)),2)   
144iHigh =Right(Hex(Asc(c)),2)   
145toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)   
146Else   
147toByte = toByte & chrB(AscB(c))   
148End If   
149Next   
150End function   
151End Class   
152  
153  
154Class FileInfo   
155dim FormName,FileName,FilePath,FileSize,FileStart   
156Private Sub Class_Initialize   
157FileName = ""   
158FilePath = ""   
159FileSize = 0   
160FileStart= 0   
161FormName = ""   
162End Sub   
163  
164Public function SaveAs(FullPath)   
165dim dr,ErrorChar,i   
166SaveAs=1   
167if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function   
168if FileStart=0 or right(fullpath,1)="/" then exit function   
169set dr=CreateObject("Adodb.Stream")   
170dr.Mode=3   
171dr.Type=1   
172dr.Open   
173upfile_the_Stream.position=FileStart-1   
174upfile_the_Stream.copyto dr,FileSize   
175dr.SaveToFile FullPath,2   
176dr.Close   
177set dr=nothing   
178SaveAs=0   
179end function   
180End Class   
181</script>

保存为upload_fun.asp

使用:

1OPTION EXPLICIT
1<html>
2<head>
3<title>文件上传</title>
4</head>
5<body>
6<br/>文件上传!<hr align="left" noshadow="" size="1" width="300"/><br/><br/>   

dim upload,file,formName,formPath,iCount
set upload=new upload_file ''建立上传对象

response.write upload.Version&amp;"<br/><br/>" ''显示上传类的版本

if upload.form("filepath")="" then ''得到上传目录
HtmEnd "请输入要上传至的目录!"
set upload=nothing
response.end
else
formPath=upload.form("filepath")
''在目录后加(/)
if right(formPath,1)&lt;&gt;"/" then formPath=formPath&amp;"/"
end if

iCount=0
for each formName in upload.file ''列出所有上传了的文件
set file=upload.file(formName) ''生成一个文件对象
if file.FileSize&gt;0 then ''如果 FileSize &gt; 0 说明有文件数据
file.SaveAs Server.mappath(formPath&amp;file.FileName) ''保存文件
response.write file.FilePath&amp;file.FileName&amp;" ("&amp;file.FileSize&amp;") =&gt; "&amp;formPath&amp;File.FileName&amp;" 成功!<br/>"
iCount=iCount+1
end if
set file=nothing
next
set upload=nothing ''删除此对象
Htmend iCount&amp;" 个文件上传结束!"

sub HtmEnd(Msg)
set upload=nothing
response.write "<br/>"&amp;Msg&amp;" [<a href="" javascript:history.back();""="">返回</a>]</body></html>

1"   
2response.end   
3end sub   

---------------------------------------------------------------

http://www.google.com/search?hl=zh-CN&amp;ie=UTF-8&amp;oe=UTF-8&amp;q=%E6%97%A0%E7%BB%84%E4%BB%B6%E4%B8%8A%E4%BC%A0&amp;btnG=Google%E6%90%9C%E7%B4%A2&amp;lr=lang_zh-CN
---------------------------------------------------------------

稻香老农无组件上传文件

或者lyfUpload上传组件
搜索一下
---------------------------------------------------------------

无组件上传,强烈推荐稻香老农的。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus