Problem mit InetGet Downloadpfad

  • Hallo!
    Das hier klappt nicht: Die Dateien werden nicht heruntergeladen, ich erhallte aber auch keine Fehlermeldung beim Komplimieren

    [autoit]


    Func _Download($aFunc_Array = "")
    For $i2 = 0 To _GUICtrlListView_GetItemCount($pListView) - 1
    If _GUICtrlListView_GetItemChecked($pListView, $i2) Then ; wenn angehakt dann
    $sFileName1 = StringTrimLeft($aFunc_Array[$i2][5],StringInStr($aFunc_Array[$i2][5],"/",1,-1));Der Dateiname des downlaods
    $sFileName2 = StringTrimLeft($aFunc_Array[$i2][6],StringInStr($aFunc_Array[$i2][6],"/",1,-1));Der Dateiname des downlaods
    $string1 = @ProgramFilesDir & '\oi\programmdateien\normal\test.xls'

    [/autoit][autoit][/autoit][autoit]

    InetGet($aFunc_Array[$i2][5], $string1 ,1,0);Datei wird gedownloadet
    InetGet($aFunc_Array[$i2][6], @ProgramFilesDir & '\oi\programmdateien\normal\' & $sFileName2,1,0) ;Datei wird gedownloadet

    [/autoit][autoit][/autoit][autoit]

    ;$aFunc_Array[$i2][7]=InetGetSize($aFunc_Array[$i2][5])
    ;$aFunc_Array[$i2][8]=InetGetSize($aFunc_Array[$i2][6])
    MsgBox(0,"Pfad",@ProgramFilesDir & '\oi\programmdateien\normal\' & $sFileName2)
    EndIf
    Next ;= > weiter mit For

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>_Download

    [/autoit][autoit][/autoit][autoit][/autoit]

    Wie man sieht habe ich schon vieles ausprobiert
    - Vor und Nach den String ein " bzw. ' gesetzt
    - In der MsgBox wird der Pfad korrekt angezeigt
    - Wenn ich den Pfad von der MsgBox direkt in die INetGet reinschreibe, dann klappt es
    - Ich habe auserdem einmal das @Pro... und das $file.. als Text intergriet, hat beides mal nicht geklappt
    - Dann habe ich noch das ganze als Variable gespeichert, damit klappt es auch nicht...
    - komplimiert habe ich es auch noch ausgeführt, ohne Erfolg
    - und auch das ausschalten von Kaspersky hat nichts gebracht

    Wo ist da der Fehler?
    In den zwei auskommentierten Zeilen ist was Falsch, habe mich damit aber noch nicht beschäftigt, sollte es was einfaches sein wäre es nett, wenn Ihr mir das auch gleich mitbeantworten könnt.

    • Offizieller Beitrag

    Hast du mal überprüft, ob der Quellpfad richtig gesetzt ist?

    Spoiler anzeigen
    [autoit]

    Func _Download($aFunc_Array = "")
    For $i2 = 0 To _GUICtrlListView_GetItemCount($pListView) - 1
    If _GUICtrlListView_GetItemChecked($pListView, $i2) Then ; wenn angehakt dann
    $sFileName1 = StringTrimLeft($aFunc_Array[$i2][5], StringInStr($aFunc_Array[$i2][5], "/", 1, -1));Der Dateiname des downlaods
    $sFileName2 = StringTrimLeft($aFunc_Array[$i2][6], StringInStr($aFunc_Array[$i2][6], "/", 1, -1));Der Dateiname des downlaods
    $string1 = @ProgramFilesDir & '\oi\programmdateien\normal\test.xls'

    [/autoit] [autoit][/autoit] [autoit]

    InetGet($aFunc_Array[$i2][5], $string1, 1, 0);Datei wird gedownloadet
    If @error Then ConsoleWrite("Fehler beim 1. Download" & @CRLF)
    InetGet($aFunc_Array[$i2][6], @ProgramFilesDir & '\oi\programmdateien\normal\' & $sFileName2, 1, 0) ;Datei wird gedownloadet
    If @error Then ConsoleWrite("Fehler beim 2. Download" & @CRLF)
    ;$aFunc_Array[$i2][7]=InetGetSize($aFunc_Array[$i2][5])
    ;$aFunc_Array[$i2][8]=InetGetSize($aFunc_Array[$i2][6])
    MsgBox(0, "Quellpfad 1", $aFunc_Array[$i2][5])
    MsgBox(0, "Quellpfad 2", $aFunc_Array[$i2][6])
    MsgBox(0, "Pfad", @ProgramFilesDir & '\oi\programmdateien\normal\' & $sFileName2)
    EndIf
    Next ;= > weiter mit For

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Download

    [/autoit]

    Übrigens ist das ein Ratespiel, weil es keiner wirklich testen kann, ohne den kompletten Source.

  • Wird alles richtig ausgegeben, auch die MsgBox mit dem Fehler wird nciht angezeigt...
    Ich habe irgendwo gelesen, das man statt \ ein n/ probieren soll, könnte das helfen? (Wenn ja, wie muss das dann intergriert werden?)
    Das merkwürdige ist ja, das wenn ich den Pfad für den Download-Ort direkt eintrage, das es dann klappt...

  • Ich habe jetzt mal das ConsolWrite durch eine MsgBox

    [autoit]

    If @error Then MsgBox(0,"Fehler","Fehler beim 1. Download" & @CRLF)

    [/autoit]


    ersetzt.
    Dann erscheint die auch, dort steht aber nur Fehler beim 1. Download und dann nichts mehr.
    Edit: @CRLF steht ja für Zeilenumbruch, ist also normal das dort nichts steht :D . Gibt es keine möglichkeit, das noch genauer zu definieren?

    • Offizieller Beitrag

    Poste mal die Quellpfade der Downloads.

  • Jetzt geht es sogar direkt nicht mehr...
    Ich werde mal die beiden Dateien auf meinem Webspace mit CHMOD 777 hochladen, vielleicht bringt das ja was, dann schreib ich auch die Pfade rein.

  • http://oci.bplaced.net/1.jpg
    und
    http://oci.bplaced.net/2.jpg
    sind die Pfade.
    Da es bplaced ist, habe ich noch

    [autoit]

    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da bei bPlaced dieser gesperrt ist

    [/autoit]


    hinzugefügt
    Funktioniert aber immer noch nicht...

  • [autoit]

    InetGet("http://oci.blpaced.net/1.jpg", "F:\1-1.jpg")

    [/autoit]


    Damit geht es. Ich habe dann noch den Internet-Pfad aus dem Array eingetragen, den PC-Pfad gelassen, hat nicht geklappt.
    Umgekehrt das gleiche.
    Da muss ja irgendwie vielleicht ein Leerzeichen zu viel sein, oder das muss in diese "-" Zeichen

  • [autoit]

    InetGet("http://oci.blpaced.net/1.jpg", "F:\1-1.jpg")

    [/autoit]


    Damit geht es. Ich habe dann noch den Internet-Pfad aus dem Array eingetragen, den PC-Pfad gelassen, hat nicht geklappt.
    Umgekehrt das gleiche.
    Da muss ja irgendwie vielleicht ein Leerzeichen zu viel sein, oder das muss in diese "-" Zeichen

    Ich habe jetzt nochmal mit ConsoleWrite die beiden Pfade abgefragt, es ist nirgendwo ein Leerzeichen zuviel.
    In Anführungszeichen gab es wieder keine Änderung

  • Hallo!

    Dann lass doch entweder

    [autoit]

    StringStripWS ( "string", flag )

    [/autoit]

    drüber laufen, oder prüfe ob am Anfang oder am Ende ein leerzeichen steht:

    [autoit]

    If StringLeft($URL, 1) = " " Then StringTrimLeft($URL, 1)
    If StringRight($URL, 1) = " " Then StringTrimRight($URL,1)

    [/autoit]

    Oder versuch dich an StringRegExpReplace, damit kannst du prüfen ob am Anfang oder Ende mehrere Leerzeichen stehen, und diese ersetzen.

    Wenn ich gleich Zeit hab kann ich dir die Exp auch machen (Ich muss grade mal Mittag essen :P)

    lG,
    Lenny

    Jaja, Moo does the Cow!

  • [autoit]


    Func _Download($aFunc_Array = "")
    For $i2 = 0 To _GUICtrlListView_GetItemCount($pListView) - 1
    If _GUICtrlListView_GetItemChecked($pListView, $i2) Then ; wenn angehakt dann
    $sFileName1 = StringTrimLeft($aFunc_Array[$i2][4],StringInStr($aFunc_Array[$i2][4],"/",1,-1));Der Dateiname des downlaods
    $sFileName2 = StringTrimLeft($aFunc_Array[$i2][5],StringInStr($aFunc_Array[$i2][5],"/",1,-1));Der Dateiname des downlaods
    $string1 = StringStripWS ( $aFunc_Array[$i2][4] , 8 )
    $string2 = StringStripWS ( @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1,8)
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist
    InetGet($string1,$string2,1,0);Datei wird gedownloadet
    If @error Then MsgBox(0,"Fehler","Fehler beim 1. Download" & @CRLF)
    ;InetGet("http://oci.blpaced.net/1.jpg", "F:\1-1.jpg")

    [/autoit][autoit][/autoit][autoit]

    ;InetGet($aFunc_Array[$i2][5], @ProgramFilesDir & '\oci\programmdateien\extra\' & $sFileName2,1,0) ;Datei wird gedownloadet
    ;If @error Then ConsoleWrite("Fehler beim 1. Download" & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "Quellpfad 1", $string1)
    MsgBox(0, "Quellpfad 2", $string2)

    [/autoit][autoit][/autoit][autoit]

    ;$aFunc_Array[$i2][7]=InetGetSize($aFunc_Array[$i2][5])
    ;$aFunc_Array[$i2][8]=InetGetSize($aFunc_Array[$i2][6])
    ; ConsoleWrite('--' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '<<' & @CRLF)
    ; ConsoleWrite('--' & '"' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '"' & '<<' & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    EndIf
    Next ;= > weiter mit For

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>_Download

    [/autoit][autoit][/autoit][autoit][/autoit]


    Klappt leider immer noch nicht... Das ist echt zum verrückt werden!! Da muss mann doch irgendwie herausfinden, waurm der das nicht runterladen konnte...

  • [autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _Download($aFunc_Array = "")
    $Result = ""
    For $i2 = 0 To _GUICtrlListView_GetItemCount($pListView) - 1
    If _GUICtrlListView_GetItemChecked($pListView, $i2) Then ; wenn angehakt dann
    $sFileName1 = StringTrimLeft($aFunc_Array[$i2][4], StringInStr($aFunc_Array[$i2][4], "/", 1, -1));Der Dateiname des downlaods
    $sFileName2 = StringTrimLeft($aFunc_Array[$i2][5], StringInStr($aFunc_Array[$i2][5], "/", 1, -1));Der Dateiname des downlaods
    $string1 = StringStripWS($aFunc_Array[$i2][4], 8)
    $Result &= $string1 & @CRLF
    $string2 = StringStripWS(@ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1, 8)
    $Result &= $string2 & @CRLF
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist
    InetGet($string1, $string2, 1, 0);Datei wird gedownloadet
    If @error Then
    $Result &= "InetGet Error:" & @CRLF
    MsgBox(0, "Fehler", "Fehler beim 1. Download" & @CRLF)
    EndIf
    ;InetGet("http://oci.blpaced.net/1.jpg", "F:\1-1.jpg")

    [/autoit][autoit][/autoit][autoit]

    ;InetGet($aFunc_Array[$i2][5], @ProgramFilesDir & '\oci\programmdateien\extra\' & $sFileName2,1,0) ;Datei wird gedownloadet
    ;If @error Then ConsoleWrite("Fehler beim 1. Download" & @CRLF)
    ClipPut($Result)
    MsgBox(0, "Quellpfad 1", $string1)
    MsgBox(0, "Quellpfad 2", $string2)

    [/autoit][autoit][/autoit][autoit]

    ;$aFunc_Array[$i2][7]=InetGetSize($aFunc_Array[$i2][5])
    ;$aFunc_Array[$i2][8]=InetGetSize($aFunc_Array[$i2][6])
    ; ConsoleWrite('--' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '<<' & @CRLF)
    ; ConsoleWrite('--' & '"' & @ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1 & '"' & '<<' & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    EndIf
    Next ;= > weiter mit For

    [/autoit][autoit][/autoit][autoit]

    EndFunc ;==>_Download

    [/autoit]

    Du kannst die Func ja mal genauso ausführen, und das Ergebnis (das in deiner Zwischenablage liegt) hier posten, bzw in dein Alten Post reineditieren!

    Jaja, Moo does the Cow!

  • Dort steht jetzt:

    Code
    http://oci.bplaced.net/1.jpg
    F:\Programme\oci\programmdateien\anleitungen\1.jpg
    InetGet Error:
  • Also der Fehler muss irgendwo hier sein:

    [autoit]


    $sFileName1 = StringTrimLeft($aFunc_Array[$i2][4], StringInStr($aFunc_Array[$i2][5], "/", 1, -1));Der Dateiname des downlaods
    $string2 = StringStripWS(@ProgramFilesDir & '\oci\programmdateien\anleitungen\' & $sFileName1, 8)

    [/autoit]


    Denn wenn ich den Pfad direkt angebe, (F:\... ) geht es.
    Kann es daran liegen, das irgendwelche Includes fehlen, bei der Version sich etwas geändert hat oder das ich mustdeclarevar oder den onevet mode nicht aktiv habe?

  • Keine Ahnung. Funktioniert dieses verkürzte Skript denn?

    [autoit]

    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6 (.NET CLR 2.0.50727)") ; User-Agent (Header) von AutoIt3 ändern, da beim Webhoster dieser gesperrt ist

    [/autoit][autoit][/autoit][autoit]

    $string1 = "http://oci.bplaced.net/1.jpg"

    [/autoit][autoit][/autoit][autoit]

    $Name = StringTrimLeft($string1,StringInStr($string1,"/",1,-1));Der Dateiname des downlaods
    $string2 = @ProgramFilesDir & "\test\" & $Name

    [/autoit][autoit][/autoit][autoit]

    InetGet($string1,$string2,1,0);Datei wird gedownloadet
    ConsoleWrite("error: " & @error & @CRLF)
    ConsoleWrite($string1 & @CRLF)
    ConsoleWrite($string2 & @CRLF)

    [/autoit]
  • Nein.
    Da kommt raus:

    Code
    error: 31
    http://oci.bplaced.net/1.jpg
    F:\Programme\test\1.jpg
    +>18:36:29 AutoIT3.exe end
  • Ah. Ich bekomme den Fehler 31 auch, wenn das Verzeichnis nicht existiert, in das die Datei gespeichert werden soll. Also schieb ein DirCreate ein ;)

    [autoit]

    DirCreate(@ProgramFilesDir & "\test\")

    [/autoit]
  • :cursing: :cursing: :cursing: Jetzt habe ich 4 Stunden an diesem bekl****** Teil rumprobiert, nur weil so ein paar Zeichen fehlen.... :cursing: :cursing:

    :thumbup: Danke, das wars. :thumbup: 8o