欢迎光临
我们一直在努力

ASP 无组件上传-ASP教程,组件开发

建站超值云服务器,限时71元/月

asp 无组件上传

说明:从网上收集了一部分,自己写了一部分。主要提升就是对于form的二进制数据进行了类封装,可以容易的得到form内的元素的信息。

form 二进制数据格式:

分割标志数据 + 0x0d0a

元素说明信息 + 0x0d0a0d0a

元素内容数据 + 0x0d0a

分割标志数据 + 0x0d0a

元素说明信息 + 0x0d0a0d0a

元素内容数据 + 0x0d0a

……

分割标志数据 + 0x0d0a

1. upload.htm

<html>

  <head><title>文件上传</title></head>

  <body>

<form enctype="multipart/form-data" action="upload.asp" method="post">

<input name="text0" type=text value="文本框"><br>

<input name="file1" type=file accept="image/*"><br>

<input name="file2" type=file accept="image/*"><br>

<input type=submit value="上传">

</form>

  </body>

</html>

2. upload.asp

<!–#include file="upload.inc"–>

<%

by sam 2004,6

###############################################################################

response.expires = 0

if request.servervariables("request_method")="post" then

response.clear()

response.buffer=true

set uform = new uploadform

uform.find_element "text0"

data = midb(uform.formdata,uform.datastart,uform.datalen)

response.binarywrite data

sdata = binarytostring(data)

response.write sdata

response.binarywrite stringtobinary(sdata)

uform.find_element "file1"

savefile server.mappath("/recv1.dat"),uform.formdata,uform.datastart,uform.datalen

uform.find_element "file2"

savefile server.mappath("/recv2.dat"),uform.formdata,uform.datastart,uform.datalen

set uform = nothing

end if

%>

3. upload.inc

<%

by sam 2004,6

#################################################################

function savefile(filename,formdata,start,len)

set strm1=server.createobject("adodb.stream")

set strm2=server.createobject("adodb.stream")

strm1.open

strm1.type=1 binary

strm2.open

strm2.type=1 binary

strm1.write formdata

strm1.savetofile server.mappath("/1.raw"),2

strm1.position = start – 1

strm1.copyto strm2,len

strm2.savetofile server.mappath("/1.gif"),2

strm2.savetofile filename,2

set strm1=nothing

set strm2=nothing

end function

function simplebinarytostring(binary)

dim i, s

for i = 1 to lenb(binary)

s = s & chr(ascb(midb(binary,i,1)))

next

simplebinarytostring = s

end function

function binarytostring(binary)

dim cl1,cl2,cl3,pl1,pl2,pl3

dim l

cl1 = 1

cl2 = 1

cl3 = 1

l = lenb(binary)

do while cl1<=l

pl3 = pl3 & chr(ascb(midb(binary,cl1,1)))

cl1 = cl1 + 1

cl3 = cl3 + 1

if cl3>300 then

pl2 = pl2 & pl3

pl3 = ""

cl3 = 1

cl2 = cl2 + 1

if cl2>200 then

pl1 = pl1 & pl2

pl2 = ""

cl2 = 1

end if

end if

loop

binarytostring = pl1 & pl2 & pl3

end function

function stringtobinary(string)

dim i, b

for i=1 to len(string)

b = b & chrb(asc(mid(string,i,1)))

next

stringtobinary = b

end function

class uploadform

private sub class_initialize()

datastart = 0

datalen = 0

formsize=request.totalbytes

formdata=request.binaryread(formsize)

response.write "<br>myclass start<br>"

end sub

private sub class_terminate()

response.write "<br>myclass over<br>"

end sub

public datastart

public datalen

public formsize

public formdata

public sub find_element( name)

datastart = 0

datalen = 0

bncrlf=chrb(13) & chrb(10)

strname = "name=" & chr(34) & name & chr(34)

spos = 1

epos = 1

k = 0

do while ( spos < formsize)

epos = instrb(spos,formdata,bncrlf)

divider = midb(formdata,spos, epos – spos)

sdivider = binarytostring (divider)

response.write sdivider & "<br>"

response.binarywrite divider & "<br>"

spos = epos + 2

epos = instrb(spos,formdata,bncrlf & bncrlf)

header = midb(formdata,spos,epos – spos)

sheader = binarytostring (header)

response.write sheader & "<br>"

response.binarywrite header & "<br>"

spos = epos + 4

epos = instrb(spos,formdata,divider)

if instr(sheader,strname) > 0 then

datastart = spos base 1

datalen = epos – spos – 2

response.write "start = " & datastart & "<br>"

response.write " end = " & datalen & "<br>"

savefile server.mappath("/output.dat"),formdata, datastart,datalen

exit do

end if

spos = epos

k = k + 1

if ( k > 20 ) then

exit do

end if

loop

end sub

end class

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP 无组件上传-ASP教程,组件开发
分享到: 更多 (0)