= * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = * = = *
* 作 者: 我本有心
= 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
%>