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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章