| 
| 技术资料  > ASP技术 > ASP应用 : 不用组件实现上载功能(英文NT) |  
不用组件实现上载功能(英文NT) March 25,2004 |  
'---- file name /upaoad.asp/ 
 
<% 
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 
%> 
         |  
 
 |