不用组件实现上载功能(1)
点击次数:34 次 发布日期:2008-11-26 15:14:34 作者:源代码网
|
<% Public Function BuildUploadRequest(strRequestBin) Dim PosBeg, PosEnd, boundary, boundaryPos "Get the boundary PosBeg = 1 PosEnd = InstrB(PosBeg,strRequestBin,getByteString(chr(13))) boundary = MidB(strRequestBin,PosBeg,PosEnd-PosBeg) boundaryPos = InstrB(1,strRequestBin,boundary) "Get all data inside the boundaries Do until (boundaryPos = InstrB(strRequestBin,boundary & getByteString("--"))) "Members variable of objects are put in a dictionary object Dim UploadControl Set UploadControl = CreateObject("Scripting.Dictionary") Dim Pos, Name "Get an object name Pos = InstrB(boundaryPos,strRequestBin,getByteString("Content-Disposition")) Pos = InstrB(Pos,strRequestBin,getByteString("name=")) PosBeg = Pos + Len("name=") + 1 PosEnd = InstrB(PosBeg,strRequestBin,getByteString(chr(34))) Name = getString(MidB(strRequestBin,PosBeg,PosEnd-PosBeg)) Dim PosFile, PosBound, ContentType, Value "Test if object is of file type PosFile = InstrB(BoundaryPos,strRequestBin,getByteString("filename=")) PosBound = InstrB(PosEnd,strRequestBin,boundary) If PosFile <> 0 AND PosFile < PosBound Then "Get FilePathName of the file PosBeg = PosFile + Len("filename=") + 1 PosEnd = InstrB(PosBeg,strRequestBin,getByteString(chr(34))) FilePathName = getString(MidB(strRequestBin,PosBeg,PosEnd-PosBeg)) "Add filename(with path) to dictionary object UploadControl.Add "FilePathName", FilePathName "Get Content-Type of the file Pos = InstrB(PosEnd,strRequestBin,getByteString("Content-Type:")) PosBeg = Pos + Len("Content-Type:") + 1 PosEnd = InstrB(PosBeg,strRequestBin,getByteString(chr(13))) ContentType = getString(MidB(strRequestBin,PosBeg,PosEnd-PosBeg)) "Add content-type to dictionary object UploadControl.Add "ContentType",ContentType "Get content of object PosBeg = PosEnd + 4 PosEnd = InstrB(PosBeg,strRequestBin,boundary)-2 Value = MidB(strRequestBin,PosBeg,PosEnd-PosBeg) Else "Get content of object Pos = InstrB(Pos,strRequestBin,getByteString(chr(13))) PosBeg = Pos + 4 PosEnd = InstrB(PosBeg,strRequestBin,boundary)-2 Value = getString(MidB(strRequestBin,PosBeg,PosEnd-PosBeg)) End If "Add content to dictionary object UploadControl.Add "Value" , Value "Add dictionary object to main dictionary Set UploadRequest(Name) = UploadControl "Loop to next object BoundaryPos = InstrB(BoundaryPos+LenB(boundary),strRequestBin,boundary) Loop End Function "String to byte string conversion Public Function getByteString(strString) Dim intCount getByteString = "" For intCount = 1 to Len(strString) getByteString = getByteString & chrB(AscB(Mid(strString,intCount,1))) Next End Function "Byte string to string conversion Public Function getString(strString) Dim intCount getString = "" For intCount = 1 to LenB(strString) getString = getString & chr(AscB(MidB(strString,intCount,1))) Next End Function %> 源代码网供稿. |
