'将二进制外码系列转换成vb字符串 Private Function GetText (Str1r) Dim s,t,t1,i s = "":t="":t1="" For i =1 To LenB(str1r) t= AscB(MidB(Str1r,i,1)) '按字节取出外码 if not(t > 127) Then '字节高位为0,表示英文字符 s = s + Chr(t) Else i = i +1 '当为汉字时,取第二个字节 t1 = AscB(MidB(Str1r,i,1)) s = s + Chr(t * 256 + t1) '将汉字两字节外码组合成ANSI码 End If Next GetText = s End Function '将字符串转换为二进制系列 Private Function GetBinary(str1) Dim T2,t1 For i = 1 To Len(Str1) t1 = CStr(Hex(Asc(Mid(Str1,i,1)))) If Len(t1)=2 Then T2 = T2 + ChrB(Clng("&h" + Trim(t1))) Else T2 = T2 + ChrB(Clng("&H") + Mid(Trim(t1),1,2)) T2 = T2 + ChrB(Clng("&H") + Mid(Trim(t1),3,2)) End If Next GetBinary = T2 End Function '将上传的文件保存在服务器的硬盘上 Public Function SaveToFile (FieldName,fullpath) dim dr '定义创建一个流 SaveToFile="" if trim(fullpath)="" or FileName="" then exit function '检测参数是否有真实数据 if right(fullpath,1)="/" then exit function '检测路径的正确性 set dr=CreateObject("Adodb.Stream") dr.Mode=3 '读写模式 dr.Type=1 '二进制模式 dr.Open '打开 Dim L1,DataStart,DataLng L1 = InStrB(BdataStr,GetBinary("name=" + Chr(34) +FieldName +Chr(34))) '获取file域的位置 DataStart = InStrB(L1,BdataStr,ChrB(13) + ChrB(10) + ChrB(13) + ChrB(10)) +4 '实体数据的开始位置 DataLng = InStrB(DataStart,BdataStr,ChrB(13) + ChrB(10) + ChrB(13) + ChrB(10)) - DataStart '实体数据的大小 wawa_stream.position=DataStart-1 '设置全局流的游标,因为全局流和全局数据BdataStr对应的 wawa_stream.copyto dr,DataLng '从全局流里获取数据 dr.SaveToFile FullPath,2 '保存在指定位置 dr.Close '关闭流 set dr=nothing '析构流 SaveToFile=Mid(FileName,InStrRev(FileName, "\")+1) '返回上传文件的文件名 End Function End Class %> |