ASP文件上傳核心代碼

 

<!--
= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * 
*    作 者:  我本有心
=    QQ:     381584252
*     E-Mail: hztgcl1986@163.com
=     轉載請註明出處及作者!
*     版權所有,侵權必究!!!
=
*    http://www.8848so.com,人物搜索,8848So    
= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * 
-->
<%
'此代碼適合有一定ADODB.Stream基礎的人閱讀
'
這裏只有服務器端代碼,想必客戶端不是問題所在

Dim formsize,formdata,bincrlf,oencrlfplace,twocrlfplace,ext,filepath,p,l
Dim usingstream,stream

formsize
=Request.TotalBytes
formdata
=Request.BinaryRead(formsize)

Set usingstream=Server.CreateObject("ADODB.Stream")
usingstream.Type
=1
usingstream.Open()
usingstream.Write(formdata)

bincrlf
=ChrB(13)&ChrB(10'二進制回車換行
oencrlfplace=InStrB(formdata,bincrlf) '44,第一次回車換行位置
twocrlfplace=InStrB(oencrlfplace+1,formdata,bincrlf) '第二次回車換行位置

Set stream=Server.Createobject("ADODB.Stream")
stream.Type
=1
stream.Open()
usingstream.Position
=oencrlfplace+1
usingstream.CopyTo stream,twocrlfplace
-oencrlfplace-3 '得到第二行數據,twocrlfplace-onecrlfplace-(回車換行長度+"長度)
stream.Position=0
stream.Type
=2 '字符串
stream.CharSet="GB2312"
streamtext
=stream.Readtext() '讀取第二行數據
stream.Close()

ext
=Mid(streamtext,InstrRev(streamtext,"")+1'得到文件名

filepath
=Server.MapPath("upload/"&ext)

p
=InStrB(formdata,bincrlf&bincrlf)+4 '4爲兩次回車換行長度
l=InStrB(p+1,formdata,LeftB(formdata,oencrlfplace-1))-p-2 '文件內容部分長度,onecrlfplace-1爲第一行數據(也是分隔符),2爲回車換行長度
stream.Type=1
stream.Open()
usingstream.Position
=p-1
usingstream.CopyTo stream,l 
'文件內容數據
stream.SaveToFile filepath,2 '保存文件

usingstream.Close():
Set usingstream=Nothing
stream.Close():
Set stream=Nothing
%
>

 

 


 

發佈了30 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章