上傳|無組件
這是我從我以前寫過的程式中分離出來的,由於這段代碼是針對整體成體程式寫的,因此功能非常簡單,而且對於上傳的資料也沒有嚴格的限制,所以難免會出現這樣或那樣的錯誤。
我貼著篇文章主要是讓大家瞭解一下無組件上傳的思路,而不是讓大家使用的。
<%
'Yanhang.00上傳程式V1.0
'1.0版本的程式是從以前的程式修改過來的,但是可能還是仍有不足,如果你發現任何錯誤,請寫信通知我,謝謝!
'請在使用前先修改下面的資訊
'目前本程式我認為最大的不足就是只能用系統時間定義檔案名稱,不能使用源檔案名稱,這一點我會在以後的版本中改進。
'Enjoy yourself!
'程式製作:yanhang
'email:yanhang@msn.com
'支援人員:http://yanhang00.yeah.net
'本程式要運行在ado 2.5以上版本環境下
'#####################請修改以下資訊#####################################
dim siteurl,picsavefolder,limitbyte,lsfilename
siteurl = "http://www.yours.com" '網站地址(末尾不要有"/"符號)
picsavefolder = "uploadfile/" '圖片儲存檔案夾(以"/"符號結尾)
limitbyte = 300 '檔案大小限制,單位:k
'######################################################################
'#####################以下資訊請不要修改#################################
if request.totalbytes < 192 then
%>
<html>
<head>
<title>檔案上傳</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<BODY>
<FORM name="form2" METHOD=POST ACTION="upload.asp" enctype="multipart/form-data">
請選擇檔案:
<INPUT TYPE="file" NAME="file">
<INPUT TYPE="submit" value="上傳"> 大小限制:<%=limitbyte%>k
</FORM>
</BODY>
</html>
<%
else
dim contentlen
'接收表單資訊
contentlen=request.totalbytes
'檢測檔案大小
if contentlen>limitbyte*1024 then
response.write "檔案超過"&limitbyte&"k,不允許上傳!"
else
dim content
'讀取上傳檔案資訊
content=request.binaryread(request.totalbytes)
'二進位相互轉換函式
Function getByteString(StringStr)
For i=1 to Len(StringStr)
char=Mid(StringStr,i,1)
getByteString=getByteString&chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
'處理資料
dim upbeg,upend,lineone,linetwo,linethree,line1,line2,line3
upbeg=1
upend=instrb(upbeg,content,getbytestring(chr(10)))
lineone=midb(content,upbeg,upend-upbeg)
upbeg=upend+1
line1=lenb(lineone)
upend=instrb(upbeg,content,getbytestring(chr(10)))
linetwo=midb(content,upbeg,upend-upbeg)
upbeg=upend+1
line2=lenb(linetwo)
upend=instrb(upbeg,content,getbytestring(chr(13)))
linethree=midb(content,upbeg,upend-upbeg)
line3=lenb(linethree)
'獲得檔案名稱
dim pp,checknametemp,checklen,checkname,filename
pp=instrb(1,linetwo,getbytestring(chr(46)))
checknametemp=rightb(linetwo,line2-pp+1)
checklen=instrb(1,checknametemp,getbytestring(chr(34)))
checkname=getstring(leftb(checknametemp,checklen-1))
'檢測檔案尾碼
if checkname<>"Content-Disposition: form-data; name=" then
if checkname=".txt" or checkname=".doc" or checkname=".gif" or checkname=".jpg" or checkname=".jpeg" or checkname=".zip" or checkname=".rar" or checkname=".bmp" or checkname=".png" or checkname=".tiff" then
'定義檔案名稱
filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&checkname
'上傳檔案
dim alllen,upstream,upstreamend,file
alllen=line1+line2+line3+6
set upstream=server.createobject("adodb.stream")
set upstreamend=server.createobject("adodb.stream")
upstream.type=1
upstreamend.type=1
upstream.open
upstreamend.open
upstream.write content
upstream.position=alllen
file=upstream.read(clng(contentlen-alllen-line1-5))
upstreamend.write file
upstreamend.savetofile(server.mappath(picsavefolder&filename))
upstream.close
upstreamend.close
set upstream=nothing
set upstreamend=nothing
response.write "檔案上傳成功!<br>檔案名稱:"&siteurl&"/"&picsavefolder&filename
else
response.write "不允許上傳"&checkname&"格式檔案"
end if
else
response.write "您沒有填寫檔案名稱"
end if
end if
end if
%>