News_Upfile.asp
上传用户:jisenq
上传日期:2014-06-29
资源大小:7216k
文件大小:4k
源码类别:

数据库编程

开发平台:

ASP/ASPX

  1. <%
  2. '风讯无组件上传文件,转载请注明出处,Foosun.cn
  3. Dim UpFileStream
  4. Class UpFileClass
  5. Dim Form,File,Err 
  6. Private Sub Class_Initialize
  7. Err = -1
  8. End Sub
  9. Private Sub Class_Terminate  
  10. '清除变量及对像
  11. If Err < 0 Then
  12. Form.RemoveAll
  13. Set Form = Nothing
  14. File.RemoveAll
  15. Set File = Nothing
  16. UpFileStream.Close
  17. Set UpFileStream = Nothing
  18. End If
  19. End Sub
  20. Public Property Get ErrNum()
  21. ErrNum = Err
  22. End Property
  23. Public Sub GetData ()
  24. '定义变量
  25. Dim RequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
  26. Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
  27. Dim iFindStart,iFindEnd
  28. Dim iFormStart,iFormEnd,sFormName
  29. '代码开始
  30. If Request.TotalBytes < 1 Then  '如果没有数据上传
  31. Err = 1
  32. Exit Sub
  33. End If
  34. Set Form = Server.CreateObject (G_FS_DICT)
  35. Form.CompareMode = 1
  36. Set File = Server.CreateObject (G_FS_DICT)
  37. File.CompareMode = 1
  38. Set tStream = Server.CreateObject (G_FS_STREAM)
  39. Set UpFileStream = Server.CreateObject (G_FS_STREAM)
  40. UpFileStream.Type = 1
  41. UpFileStream.Mode = 3
  42. UpFileStream.Open
  43. UpFileStream.Write (Request.BinaryRead(Request.TotalBytes))
  44. UpFileStream.Position = 0
  45. RequestBinData=UpFileStream.Read 
  46. iFormEnd = UpFileStream.Size
  47. bCrLf = ChrB (13) & ChrB (10)
  48. '取得每个项目之间的分隔符
  49. sSpace=MidB (RequestBinData,1, InStrB (1,RequestBinData,bCrLf)-1)
  50. iStart=LenB (sSpace)
  51. iFormStart = iStart+2
  52. '分解项目
  53. Do
  54. iInfoEnd=InStrB(iFormStart,RequestBinData,bCrLf & bCrLf)+3
  55. tStream.Type = 1
  56. tStream.Mode = 3
  57. tStream.Open
  58. UpFileStream.Position = iFormStart
  59. UpFileStream.CopyTo tStream,iInfoEnd-iFormStart
  60. tStream.Position = 0
  61. tStream.Type = 2
  62. tStream.CharSet = "gb2312"
  63. sInfo = tStream.ReadText      
  64. '取得表单项目名称
  65. iFormStart = InStrB (iInfoEnd,RequestBinData,sSpace)-1
  66. iFindStart = InStr (22,sInfo,"name=""",1)+6
  67. iFindEnd = InStr (iFindStart,sInfo,"""",1)
  68. sFormName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)
  69. '如果是文件
  70. If InStr  (45,sInfo,"filename=""",1) > 0 Then
  71. Set oFileInfo = new FileInfo_Class
  72. '取得文件属性
  73. iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
  74. iFindEnd = InStr (iFindStart,sInfo,"""",1)
  75. sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
  76. oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "")+1)
  77. oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, ""))
  78. oFileInfo.FileExt = Mid (sFileName,InStrRev (sFileName, ".")+1)
  79. iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14
  80. iFindEnd = InStr (iFindStart,sInfo,vbCr)
  81. oFileInfo.FileType = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)
  82. oFileInfo.FileStart = iInfoEnd
  83. oFileInfo.FileSize = iFormStart -iInfoEnd -2
  84. oFileInfo.FormName = sFormName
  85. File.add sFormName,oFileInfo
  86. else
  87. '如果是表单项目
  88. tStream.Close
  89. tStream.Type = 1
  90. tStream.Mode = 3
  91. tStream.Open
  92. UpFileStream.Position = iInfoEnd 
  93. UpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
  94. tStream.Position = 0
  95. tStream.Type = 2
  96. tStream.CharSet = "gb2312"
  97. sFormValue = tStream.ReadText
  98. If Form.Exists(sFormName)Then
  99. Form (sFormName) = Form (sFormName) & ", " & sFormValue
  100. else
  101. form.Add sFormName,sFormValue
  102. End If
  103. End If
  104. tStream.Close
  105. iFormStart = iFormStart+iStart+2
  106. '如果到文件尾了就退出
  107. Loop Until  (iFormStart+2) >= iFormEnd 
  108. RequestBinData = ""
  109. Set tStream = Nothing
  110. End Sub
  111. End Class
  112. '----------------------------------------------------------------------------------------------------
  113. '文件属性类
  114. Class FileInfo_Class
  115. Dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt
  116. '保存文件方法
  117. Public Function SaveToFile (Path)
  118. On Error Resume Next
  119. Dim oFileStream
  120. Set oFileStream = CreateObject (G_FS_STREAM)
  121. oFileStream.Type = 1
  122. oFileStream.Mode = 3
  123. oFileStream.Open
  124. UpFileStream.Position = FileStart
  125. UpFileStream.CopyTo oFileStream,FileSize
  126. oFileStream.SaveToFile Path,2
  127. oFileStream.Close
  128. Set oFileStream = Nothing 
  129. End Function
  130. '取得文件数据
  131. Public Function FileData
  132. UpFileStream.Position = FileStart
  133. FileData = UpFileStream.Read (FileSize)
  134. End Function
  135. End Class
  136. %>