UpLoadClass.asp
上传用户:rblchem
上传日期:2022-04-27
资源大小:1941k
文件大小:9k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. <%
  2. Class UpLoadClass
  3. Private p_MaxSize,p_TotalSize,p_FileType,p_SavePath,p_AutoSave,p_Error
  4. Private objForm,binForm,binItem,strDate,lngTime
  5. Public FormItem,FileItem
  6. Public Property Get Version
  7. Version="Rumor UpLoadClass Version 2.0B"
  8. End Property
  9. Public Property Get Error
  10. Error=p_Error
  11. End Property
  12. Public Property Get MaxSize
  13. MaxSize=p_MaxSize
  14. End Property
  15. Public Property Let MaxSize(lngSize)
  16. if isNumeric(lngSize) then
  17. p_MaxSize=clng(lngSize)
  18. end if
  19. End Property
  20. Public Property Get TotalSize
  21. TotalSize=p_TotalSize
  22. End Property
  23. Public Property Let TotalSize(lngSize)
  24. if isNumeric(lngSize) then
  25. p_TotalSize=clng(lngSize)
  26. end if
  27. End Property
  28. ' Public Property Get FileType
  29. ' FileType=p_FileType
  30. ' End Property
  31. 'Public Property Let FileType(strType)
  32. ' p_FileType=strType
  33. 'End Property
  34. Public Property Get SavePath
  35. SavePath=p_SavePath
  36. End Property
  37. Public Property Let SavePath(strPath)
  38. p_SavePath=replace(strPath,chr(0),"")
  39. End Property
  40. Public Property Get AutoSave
  41. AutoSave=p_AutoSave
  42. End Property
  43. Public Property Let AutoSave(byVal Flag)
  44. select case Flag
  45. case 0:
  46. case 1:
  47. case 2:
  48. case false:Flag=2
  49. case else:Flag=0
  50. end select
  51. p_AutoSave=Flag
  52. End Property
  53. Private Sub Class_Initialize
  54. p_Error    = -1
  55. p_MaxSize  = 153600
  56. 'p_FileType = "jpg/gif"
  57. p_SavePath = ""
  58. p_AutoSave = 0
  59. p_TotalSize= 0
  60. strDate    = replace(cstr(Date()),"-","")
  61. lngTime    = clng(timer()*1000)
  62. Set binForm = Server.CreateObject("ADODB.Stream")
  63. Set binItem = Server.CreateObject("ADODB.Stream")
  64. Set objForm = Server.CreateObject("Scripting.Dictionary")
  65. objForm.CompareMode = 1
  66. End Sub
  67. Private Sub Class_Terminate
  68. objForm.RemoveAll
  69. Set objForm = nothing
  70. Set binItem = nothing
  71. if p_Error<>4 then binForm.Close()
  72. Set binForm = nothing
  73. End Sub
  74. Public Sub Open()
  75. if p_Error=-1 then
  76. p_Error=0
  77. else
  78. Exit Sub
  79. end if
  80. Dim lngRequestSize,binRequestData,strFormItem,strFileItem
  81. Const strSplit="'"">"
  82. lngRequestSize=Request.TotalBytes
  83. if lngRequestSize<1 or (lngRequestSize>p_TotalSize and p_TotalSize<>0) then
  84. p_Error=4
  85. Exit Sub
  86. end if
  87. binRequestData=Request.BinaryRead(lngRequestSize)
  88. binForm.Type = 1
  89. binForm.Open
  90. binForm.Write binRequestData
  91. Dim bCrLf,strSeparator,intSeparator
  92. bCrLf=ChrB(13)&ChrB(10)
  93. intSeparator=InstrB(1,binRequestData,bCrLf)-1
  94. strSeparator=LeftB(binRequestData,intSeparator)
  95. Dim p_start,p_end,strItem,strInam,intTemp,strTemp
  96. Dim strFtyp,strFnam,strFext,lngFsiz
  97. p_start=intSeparator+2
  98. Do
  99. p_end  =InStrB(p_start,binRequestData,bCrLf&bCrLf)+3
  100. binItem.Type=1
  101. binItem.Open
  102. binForm.Position=p_start
  103. binForm.CopyTo binItem,p_end-p_start
  104. binItem.Position=0
  105. binItem.Type=2
  106. binItem.Charset="UTF-8"
  107. strItem=binItem.ReadText
  108. binItem.Close()
  109. p_start=p_end
  110. p_end  =InStrB(p_start,binRequestData,strSeparator)-1
  111. binItem.Type=1
  112. binItem.Open
  113. binForm.Position=p_start
  114. lngFsiz=p_end-p_start-2
  115. binForm.CopyTo binItem,lngFsiz
  116. intTemp=Instr(39,strItem,"""")
  117. strInam=Mid(strItem,39,intTemp-39)
  118. if Instr(intTemp,strItem,"filename=""")<>0 then
  119. if not objForm.Exists(strInam&"_From") then
  120. strFileItem=strFileItem&strSplit&strInam
  121. if binItem.Size<>0 then
  122. intTemp=intTemp+13
  123. strFtyp=Mid(strItem,Instr(intTemp,strItem,"Content-Type: ")+14)
  124. strTemp=Mid(strItem,intTemp,Instr(intTemp,strItem,"""")-intTemp)
  125. intTemp=InstrRev(strTemp,"")
  126. strFnam=Mid(strTemp,intTemp+1)
  127. objForm.Add strInam&"_Type",strFtyp
  128. objForm.Add strInam&"_Name",strFnam
  129. objForm.Add strInam&"_Path",Left(strTemp,intTemp)
  130. objForm.Add strInam&"_Size",lngFsiz
  131. if Instr(intTemp,strTemp,".")<>0 then
  132. strFext=Mid(strTemp,InstrRev(strTemp,".")+1)
  133. else
  134. strFext=""
  135. end if
  136. if left(strFtyp,6)="image/" then
  137. binItem.Position=0
  138. binItem.Type=1
  139. strTemp=binItem.read(10)
  140. if strcomp(strTemp,chrb(255) & chrb(216) & chrb(255) & chrb(224) & chrb(0) & chrb(16) & chrb(74) & chrb(70) & chrb(73) & chrb(70),0)=0 then
  141. if Lcase(strFext)<>"jpg" then strFext="jpg"
  142. binItem.Position=3
  143. do while not binItem.EOS
  144. do
  145. intTemp = ascb(binItem.Read(1))
  146. loop while intTemp = 255 and not binItem.EOS
  147. if intTemp < 192 or intTemp > 195 then
  148. binItem.read(Bin2Val(binItem.Read(2))-2)
  149. else
  150. Exit do
  151. end if
  152. do
  153. intTemp = ascb(binItem.Read(1))
  154. loop while intTemp < 255 and not binItem.EOS
  155. loop
  156. binItem.Read(3)
  157. objForm.Add strInam&"_Height",Bin2Val(binItem.Read(2))
  158. objForm.Add strInam&"_Width",Bin2Val(binItem.Read(2))
  159. elseif strcomp(leftB(strTemp,8),chrb(137) & chrb(80) & chrb(78) & chrb(71) & chrb(13) & chrb(10) & chrb(26) & chrb(10),0)=0 then
  160. if Lcase(strFext)<>"png" then strFext="png"
  161. binItem.Position=18
  162. objForm.Add strInam&"_Width",Bin2Val(binItem.Read(2))
  163. binItem.Read(2)
  164. objForm.Add strInam&"_Height",Bin2Val(binItem.Read(2))
  165. elseif strcomp(leftB(strTemp,6),chrb(71) & chrb(73) & chrb(70) & chrb(56) & chrb(57) & chrb(97),0)=0 or strcomp(leftB(strTemp,6),chrb(71) & chrb(73) & chrb(70) & chrb(56) & chrb(55) & chrb(97),0)=0 then
  166. if Lcase(strFext)<>"gif" then strFext="gif"
  167. binItem.Position=6
  168. objForm.Add strInam&"_Width",BinVal2(binItem.Read(2))
  169. objForm.Add strInam&"_Height",BinVal2(binItem.Read(2))
  170. elseif strcomp(leftB(strTemp,2),chrb(66) & chrb(77),0)=0 then
  171. if Lcase(strFext)<>"bmp" then strFext="bmp"
  172. binItem.Position=18
  173. objForm.Add strInam&"_Width",BinVal2(binItem.Read(4))
  174. objForm.Add strInam&"_Height",BinVal2(binItem.Read(4))
  175. end if
  176. end if
  177. objForm.Add strInam&"_Ext",strFext
  178. objForm.Add strInam&"_From",p_start
  179. intTemp=GetFerr(lngFsiz,strFext)
  180. if p_AutoSave<>2 then
  181. objForm.Add strInam&"_Err",intTemp
  182. if intTemp=0 then
  183. if p_AutoSave=0 then
  184. strFnam=GetTimeStr()
  185. if strFext<>"" then strFnam=strFnam&"."&strFext
  186. end if
  187. binItem.SaveToFile Server.MapPath(p_SavePath&strFnam),2
  188. objForm.Add strInam,strFnam
  189. end if
  190. end if
  191. else
  192. objForm.Add strInam&"_Err",-1
  193. end if
  194. end if
  195. else
  196. binItem.Position=0
  197. binItem.Type=2
  198. binItem.Charset="utf-8"
  199. strTemp=binItem.ReadText
  200. if objForm.Exists(strInam) then
  201. objForm(strInam) = objForm(strInam)&","&strTemp
  202. else
  203. strFormItem=strFormItem&strSplit&strInam
  204. objForm.Add strInam,strTemp
  205. end if
  206. end if
  207. binItem.Close()
  208. p_start = p_end+intSeparator+2
  209. loop Until p_start+3>lngRequestSize
  210. FormItem=split(strFormItem,strSplit)
  211. FileItem=split(strFileItem,strSplit)
  212. End Sub
  213. Private Function GetTimeStr()
  214. lngTime=lngTime+1
  215. GetTimeStr=strDate&lngTime
  216. End Function
  217. Private Function GetFerr(lngFsiz,strFext)
  218. dim intFerr
  219. intFerr=0
  220. if lngFsiz>p_MaxSize and p_MaxSize>0 then
  221. if p_Error=0 or p_Error=2 then p_Error=p_Error+1
  222. intFerr=intFerr+1
  223. end if
  224. 'if Instr(1,LCase("/"&p_FileType&"/"),LCase("/"&strFext&"/"))=0 and p_FileType<>"" then
  225. ' if p_Error<2 then p_Error=p_Error+2
  226. ' intFerr=intFerr+2
  227. 'end if
  228. GetFerr=intFerr
  229. End Function
  230. Public Function Save(Item,strFnam)
  231. Save=false
  232. if objForm.Exists(Item&"_From") then
  233. dim intFerr,strFext
  234. strFext=objForm(Item&"_Ext")
  235. intFerr=GetFerr(objForm(Item&"_Size"),strFext)
  236. if objForm.Exists(Item&"_Err") then
  237. if intFerr=0 then
  238. objForm(Item&"_Err")=0
  239. end if
  240. else
  241. objForm.Add Item&"_Err",intFerr
  242. end if
  243. if intFerr<>0 then Exit Function
  244. if VarType(strFnam)=2 then
  245. select case strFnam
  246. case 0:strFnam=GetTimeStr()
  247. if strFext<>"" then strFnam=strFnam&"."&strFext
  248. case 1:strFnam=objForm(Item&"_Name")
  249. end select
  250. end if
  251. binItem.Type = 1
  252. binItem.Open
  253. binForm.Position = objForm(Item&"_From")
  254. binForm.CopyTo binItem,objForm(Item&"_Size")
  255. binItem.SaveToFile Server.MapPath(p_SavePath&strFnam),2
  256. binItem.Close()
  257. if objForm.Exists(Item) then
  258. objForm(Item)=strFnam
  259. else
  260. objForm.Add Item,strFnam
  261. end if
  262. Save=true
  263. end if
  264. End Function
  265. Public Function GetData(Item)
  266. GetData=""
  267. if objForm.Exists(Item&"_From") then
  268. if GetFerr(objForm(Item&"_Size"),objForm(Item&"_Ext"))<>0 then Exit Function
  269. binForm.Position = objForm(Item&"_From")
  270. GetData=binFormStream.Read(objForm(Item&"_Size"))
  271. end if
  272. End Function
  273. Public Function Form(Item)
  274. if objForm.Exists(Item) then
  275. Form=objForm(Item)
  276. else
  277. Form=""
  278. end if
  279. End Function
  280. Private Function BinVal2(bin)
  281. dim lngValue,i
  282. lngValue = 0
  283. for i = lenb(bin) to 1 step -1
  284. lngValue = lngValue *256 + ascb(midb(bin,i,1))
  285. next
  286. BinVal2=lngValue
  287. End Function
  288. Private Function Bin2Val(bin)
  289. dim lngValue,i
  290. lngValue = 0
  291. for i = 1 to lenb(bin)
  292. lngValue = lngValue *256 + ascb(midb(bin,i,1))
  293. next
  294. Bin2Val=lngValue
  295. End Function
  296. End Class
  297. %>