Upload_5xSoft.inc
上传用户:luoweizhao
上传日期:2021-11-29
资源大小:15269k
文件大小:4k
源码类别:

OA系统

开发平台:

ASP/ASPX

  1. <SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
  2. dim upfile_5xSoft_Stream
  3. Class upload_5xSoft
  4. dim Form,File,Version
  5. Private Sub Class_Initialize
  6. dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
  7. dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
  8. Version="无组件上传程序"
  9. if Request.TotalBytes<1 then Exit Sub
  10. set Form=CreateObject("Scripting.Dictionary")
  11. set File=CreateObject("Scripting.Dictionary")
  12. set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")
  13. upfile_5xSoft_Stream.mode=3
  14. upfile_5xSoft_Stream.type=1
  15. upfile_5xSoft_Stream.open
  16. upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)
  17. vbEnter=Chr(13)&Chr(10)
  18. iDivLen=inString(1,vbEnter)+1
  19. strDiv=subString(1,iDivLen)
  20. iFormStart=iDivLen
  21. iFormEnd=inString(iformStart,strDiv)-1
  22. while iFormStart < iFormEnd
  23. iStart=inString(iFormStart,"name=""")
  24. iEnd=inString(iStart+6,"""")
  25. mFormName=subString(iStart+6,iEnd-iStart-6)
  26. iFileNameStart=inString(iEnd+1,"filename=""")
  27. if iFileNameStart>0 and iFileNameStart<iFormEnd then
  28. iFileNameEnd=inString(iFileNameStart+10,"""")
  29. mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
  30. iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
  31. iEnd=inString(iStart+4,vbEnter&strDiv)
  32. if iEnd>iStart then
  33. mFileSize=iEnd-iStart-4
  34. else
  35. mFileSize=0
  36. end if
  37. set theFile=new FileInfo
  38. theFile.FileName=getFileName(mFileName)
  39. theFile.FilePath=getFilePath(mFileName)
  40. theFile.FileSize=mFileSize
  41. theFile.FileStart=iStart+4
  42. theFile.FormName=FormName
  43. file.add mFormName,theFile
  44. else
  45. iStart=inString(iEnd+1,vbEnter&vbEnter)
  46. iEnd=inString(iStart+4,vbEnter&strDiv)
  47. if iEnd>iStart then
  48. mFormValue=subString(iStart+4,iEnd-iStart-4)
  49. else
  50. mFormValue=""
  51. end if
  52. form.Add mFormName,mFormValue
  53. end if
  54. iFormStart=iformEnd+iDivLen
  55. iFormEnd=inString(iformStart,strDiv)-1
  56. wend
  57. End Sub
  58. Private Function subString(theStart,theLen)
  59. dim i,c,stemp
  60. upfile_5xSoft_Stream.Position=theStart-1
  61. stemp=""
  62. for i=1 to theLen
  63. if upfile_5xSoft_Stream.EOS then Exit for
  64. c=ascB(upfile_5xSoft_Stream.Read(1))
  65. If c > 127 Then
  66. if upfile_5xSoft_Stream.EOS then Exit for
  67. stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
  68. i=i+1
  69. else
  70. stemp=stemp&Chr(c)
  71. End If
  72. Next
  73. subString=stemp
  74. End function
  75. Private Function inString(theStart,varStr)
  76. dim i,j,bt,theLen,str
  77. InString=0
  78. Str=toByte(varStr)
  79. theLen=LenB(Str)
  80. for i=theStart to upfile_5xSoft_Stream.Size-theLen
  81. if i>upfile_5xSoft_Stream.size then exit Function
  82. upfile_5xSoft_Stream.Position=i-1
  83. if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then
  84. InString=i
  85. for j=2 to theLen
  86. if upfile_5xSoft_Stream.EOS then
  87. inString=0
  88. Exit for
  89. end if
  90. if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
  91. InString=0
  92. Exit For
  93. end if
  94. next
  95. if InString<>0 then Exit Function
  96. end if
  97. next
  98. End Function
  99. Private Sub Class_Terminate
  100. form.RemoveAll
  101. file.RemoveAll
  102. set form=nothing
  103. set file=nothing
  104. upfile_5xSoft_Stream.close
  105. set upfile_5xSoft_Stream=nothing
  106. End Sub
  107. Private function GetFilePath(FullPath)
  108. If FullPath <> "" Then
  109. GetFilePath = left(FullPath,InStrRev(FullPath, ""))
  110. Else
  111. GetFilePath = ""
  112. End If
  113. End  function
  114. Private function GetFileName(FullPath)
  115. If FullPath <> "" Then
  116. GetFileName = mid(FullPath,InStrRev(FullPath, "")+1)
  117. Else
  118. GetFileName = ""
  119. End If
  120. End  function
  121. Private function toByte(Str)
  122. dim i,iCode,c,iLow,iHigh
  123. toByte=""
  124. For i=1 To Len(Str)
  125. c=mid(Str,i,1)
  126. iCode =Asc(c)
  127. If iCode<0 Then iCode = iCode + 65535
  128. If iCode>255 Then
  129. iLow = Left(Hex(Asc(c)),2)
  130. iHigh =Right(Hex(Asc(c)),2)
  131. toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
  132. Else
  133. toByte = toByte & chrB(AscB(c))
  134. End If
  135. Next
  136. End function
  137. End Class
  138. Class FileInfo
  139. dim FormName,FileName,FilePath,FileSize,FileStart
  140. Private Sub Class_Initialize
  141. FileName = ""
  142. FilePath = ""
  143. FileSize = 0
  144. FileStart= 0
  145. FormName = ""
  146. End Sub
  147. Public function SaveAs(FullPath)
  148. dim dr,ErrorChar,i
  149. SaveAs=1
  150. if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
  151. if FileStart=0 or right(fullpath,1)="/" then exit function
  152. set dr=CreateObject("Adodb.Stream")
  153. dr.Mode=3
  154. dr.Type=1
  155. dr.Open
  156. upfile_5xSoft_Stream.position=FileStart-1
  157. upfile_5xSoft_Stream.copyto dr,FileSize
  158. dr.SaveToFile FullPath,2
  159. dr.Close
  160. set dr=nothing
  161. SaveAs=0
  162. end function
  163. End Class
  164. </SCRIPT>