Das hochladen einer Datei in classic asp

Habe ich immer verwendet das folgende Skript zum hochladen von Dateien in classic asp, aber es aufgehört zu arbeiten mir dieser Fehler

vbscript runtime error 800a01a8

Objekt erforderlich 'Punkt(...)'

Untersuchte ich ein wenig und ich denke, dass ist das problem beim hochladen der Datei.asp mit der Funktion BuildUploadRequest, aber ich kann wirklich nicht verstehen, warum

form

<form method="POST" action="landing-page.asp" ENCTYPE="multipart/form-data">
    <input type="file" name="file">
    <input type="hidden" name="key" value="0">
    <input type="submit" name="send" value="1">
</form>

Seite, wo das Formular landet

byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)

Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)  '//function defined in upload.asp
if UploadRequest.Item("key").Item("Value")="0" then  '//this is the line giving the error
    '//code here...
end if

hochladen.asp

Sub BuildUploadRequest(RequestBin)
    PosBeg = 1  
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)    
    boundaryPos = InstrB(1,RequestBin,boundary)

    '//Get all data inside the boundaries
    Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
        '//Members variable of objects are put in a dictionary object
        Dim UploadControl
        Set UploadControl = CreateObject("Scripting.Dictionary")
        '//Get an object name
        Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
        Pos = InstrB(Pos,RequestBin,getByteString("name="))
        PosBeg = Pos+6
        PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
        Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
        PosBound = InstrB(PosEnd,RequestBin,boundary)
        '//Test if object is of file type
        If  PosFile<>0 AND (PosFile<PosBound) Then
            '//Get Filename, content-type and content of file
            PosBeg = PosFile + 10
            PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
            FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            '//Add filename to dictionary object
            UploadControl.Add "FileName", FileName
            Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
            PosBeg = Pos+14
            PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
            '//Add content-type to dictionary object
            ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            UploadControl.Add "ContentType",ContentType
            '//Get content of object
            PosBeg = PosEnd+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
        Else
            '//Get content of object
            Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
            PosBeg = Pos+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        End If
        '//Add content to dictionary object
        UploadControl.Add "Value" , Value   
        '//Add dictionary object to main dictionary
        '//response.write name & "<br>"
        UploadRequest.Add name, UploadControl   
        '//Loop to next object
        BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
    Loop
End Sub

'//String to byte string conversion
Function getByteString(StringStr)
  For i = 1 to Len(StringStr)
    charx = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(charx))
  Next
End Function

'//Byte string to string conversion
Function getString(StringBin)
 getString =""
 For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
 Next
End Function

Dieser code hat immer funktioniert, bei jedem Projekt, aber jetzt funktioniert es nicht überall. Ich kann also nicht einfach Bearbeiten und verwenden Sie eine andere Funktion, die ich brauche, um zu verstehen, warum es nicht mehr funktioniert

  • Haben Sie die Kommentare manuell? Grund warum ich Frage ist VBScript Kommentar-syntax verwendet ' nicht // dazu führen, dass der script der Fehler zu einem syntax-error.
  • Ja, habe ich, wenn da nicht die Frage, layout würde schrecklich Aussehen
  • Ich habe es angepasst zu verwenden VBScript-Kommentare.
  • tatsächlich, VBScript versteht // als Kommentar-delimiter - Sie geben nicht einen syntax-Fehler.
  • Es gerade getestet und bekomme einen Kompilierungsfehler, wie erwartet. Könnte funktionieren, in der Klassischen ASP - (nicht getestet), aber das hat nichts zu tun mit VBScript eher das ASP-Modul ist die vorsorge für JScript unterstützen.
  • Erstens, ändern Sie Ihre CreateObject("Scripting.Dictionary") zu Server.CreateObject("Scripting.Dictionary") statt. Klingt vielleicht albern, aber ich habe Fälle gesehen, wo diese Dinge verursacht zu brechen. (Irgendwas mit Objekt-Rahmen)
  • seine ein windows-update KB3104002 problem

Schreibe einen Kommentar