欢迎光临
我们一直在努力

关于文件上传组件的调试问题

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

这是我的上传组件原文,vb作的,没有任何问题!<br>

<br>

&nbsp;&nbsp;&nbsp;public bin<br>

private names()<br>

private sizes()<br>

private filenames()<br>

private myposition()<br>

public maxsize<br>

public fcount<br>

<br>

public sub exec()<br>

&nbsp;&nbsp;&nbsp;dim pstart, pend, strboundary, i, str, position<br>

&nbsp;&nbsp;&nbsp;dim spacestr<br>

&nbsp;&nbsp;&nbsp;spacestr = &quot;—————————–&quot;<br>

&nbsp;&nbsp;&nbsp;dim tempbarray, tempstr<br>

&nbsp;&nbsp;&nbsp;tempstr = btos(bin)<br>

&nbsp;&nbsp;&nbsp;strboundary = &quot;content-disposition: form-data&quot;<br>

&nbsp;&nbsp;&nbsp;tempbarray = split(tempstr, strboundary)<br>

&nbsp;&nbsp;&nbsp;fcount = ubound(tempbarray)<br>

&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;redim names(fcount)<br>

&nbsp;&nbsp;&nbsp;redim sizes(fcount)<br>

&nbsp;&nbsp;&nbsp;redim filenames(fcount)<br>

&nbsp;&nbsp;&nbsp;redim myposition(fcount, 2)<br>

&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;strboundary = stob(strboundary)<br>

&nbsp;&nbsp;&nbsp;position = instrb(bin, strboundary) + 1<br>

&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;for i = 0 to fcount – 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstart = instrb(position, bin, stob(chr(34))) + 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pend = instrb(pstart, bin, stob(chr(34)))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;names(i) = btos(midb(bin, pstart, pend – pstart))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以上取表单名<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstart = pend + 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str = midb(bin, pstart, 15)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position = instrb(str, stob(&quot;filename&quot;))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if position &gt; 0 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstart = instrb(pstart, bin, stob(chr(34))) + 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pend = instrb(pstart, bin, stob(chr(34)))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str = btos(midb(bin, pstart, pend – pstart))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if str = empty then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filenames(i) = &quot;&quot;<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filenames(i) = str<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstart = instrb(pend, bin, stob(vbcrlf & vbcrlf)) + 4<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pend = instrb(pstart, bin, stob(&quot;——-&quot;)) – 2<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myposition(i, 0) = pstart<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myposition(i, 1) = pend<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pstart = instrb(pstart, bin, stob(vbcrlf & vbcrlf)) + 4<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pend = instrb(pstart, bin, stob(&quot;——-&quot;)) – 2<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myposition(i, 0) = pstart<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myposition(i, 1) = pend<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position = pend<br>

&nbsp;&nbsp;&nbsp;next<br>

<br>

&nbsp;&nbsp;&nbsp;dim save<br>

&nbsp;&nbsp;&nbsp;save = savetofile()<br>

&nbsp;&nbsp;&nbsp;response.write save & &quot;&lt;br&gt;&quot;<br>

end sub<br>

public function savefile(fieldname, mypath, newname)<br>

&nbsp;&nbsp;dim i, tempname, temptype, p, temppath<br>

&nbsp;&nbsp;dim binarystr() as byte<br>

&nbsp;&nbsp;for i = 0 to fcount – 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;if fieldname = names(i) then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempname = filenames(i)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = i<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit for<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;next<br>

&nbsp;&nbsp;i = p<br>

&nbsp;&nbsp;if tempname &lt;&gt; empty then<br>

&nbsp;&nbsp;&nbsp;&nbsp;if filenames(i) &lt;&gt; &quot;&quot; then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = instrrev(tempname, &quot;.&quot;)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temptype = right(tempname, len(tempname) – p)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temppath = mypath & &quot;\&quot; & newname & &quot;.&quot; & temptype<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;binarystr = midb(bin, myposition(i, 0), myposition(i, 1) – myposition(i, 0))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open temppath for binary as #1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;put #1, , binarystr<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close #1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savefile = newname & &quot;.&quot; & temptype<br>

&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savefile = &quot;0&quot;<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;savefile = &quot;0&quot;<br>

&nbsp;&nbsp;end if<br>

end function<br>

public function getform(fieldname)<br>

&nbsp;&nbsp;&nbsp;dim i, sign, p<br>

&nbsp;&nbsp;&nbsp;for i = 0 to fcount – 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if fieldname = names(i) then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getform = btos(midb(values(i), 1, lenb(values(i))))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign = 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = i<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit for<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;next<br>

&nbsp;&nbsp;&nbsp;if sign = 1 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getform = btos(midb(bin, myposition(p, 0), myposition(p, 1) – myposition(p, 0)))<br>

&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getform = &quot;&quot;<br>

&nbsp;&nbsp;&nbsp;end if<br>

end function<br>

public function getsize(fieldname)<br>

&nbsp;&nbsp;dim i, sign, p<br>

&nbsp;&nbsp;for i = 0 to fcount – 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;if fieldname = names(i) then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign = 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = i<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit for<br>

&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;next<br>

&nbsp;&nbsp;if sign = 1 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;getsize = myposition(p, 1) – myposition(p, 0)<br>

&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;getsize = 0<br>

&nbsp;&nbsp;end if<br>

end function<br>

private function btos(binstr)<br>

&nbsp;&nbsp;&nbsp;dim lnglen<br>

&nbsp;&nbsp;&nbsp;dim tmpbin<br>

&nbsp;&nbsp;&nbsp;dim strc<br>

&nbsp;&nbsp;&nbsp;dim skipflag<br>

&nbsp;&nbsp;&nbsp;dim i<br>

&nbsp;&nbsp;&nbsp;中文字符skip标志<br>

&nbsp;&nbsp;&nbsp;skipflag = 0<br>

&nbsp;&nbsp;&nbsp;strc = &quot;&quot;<br>

&nbsp;&nbsp;&nbsp;if not isnull(binstr) then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lnglen = lenb(binstr)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1 to lnglen<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if skipflag = 0 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpbin = midb(binstr, i, 1)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;判断是否中文的字符<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ascb(tmpbin) &gt; 127 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascw会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strc = strc & chr(ascw(midb(binstr, i + 1, 1) & tmpbin))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skipflag = 1<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strc = strc & chr(ascb(tmpbin))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skipflag = 0<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next<br>

&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;btos = strc<br>

end function<br>

<br>

<br>

把普通字符串转成二进制字符串函数<br>

private function stob(varstr)<br>

&nbsp;&nbsp;&nbsp;dim str2bin<br>

&nbsp;&nbsp;&nbsp;dim varchar<br>

&nbsp;&nbsp;&nbsp;dim varasc<br>

&nbsp;&nbsp;&nbsp;dim varlow, varhigh<br>

&nbsp;&nbsp;&nbsp;dim i<br>

&nbsp;&nbsp;&nbsp;str2bin = &quot;&quot;<br>

&nbsp;&nbsp;&nbsp;for i = 1 to len(varstr)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varchar = mid(varstr, i, 1)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varasc = asc(varchar)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asc对中文字符求出来的值可能为负数,<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加上65536就可求出它的无符号数值<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1在机器内是用补码表示的0xffff,<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其无符号值为65535,65535=-1+65536<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其他负数依次类推。<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if varasc &lt; 0 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varasc = varasc + 65535<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对中文的处理:把双字节低位和高位分开<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if varasc &gt; 255 then<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varlow = left(hex(asc(varchar)), 2)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;varhigh = right(hex(asc(varchar)), 2)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str2bin = str2bin & chrb(&quot;&h&quot; & varlow) & chrb(&quot;&h&quot; & varhigh)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str2bin = str2bin & chrb(ascb(varchar))<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<br>

&nbsp;&nbsp;&nbsp;next<br>

&nbsp;&nbsp;&nbsp;stob = str2bin<br>

end function<br>

<br>

<br>

private sub class_terminate()<br>

set bin = nothing<br>

end sub<br>

<br>

<br>

<br>

<br>

<br>

<br>

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