• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 13次 | 进入软件测试论坛讨论

领测软件测试网 这是我的上传组件原文,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>

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网