FTPEx FTP_Command abfragen der FTP Features

  • Hallo zusammen,

    beim Start von FileZille sieht man ja welche befehle an den FTP-Server gesendet werden und wie die Antwort aussieht. Mir geht es auptsächlich um den Befehl FEAT, der Sonderfunktionen, die über den ursprünglichen FTP Umfang hinausgehen anzeigt.

    kennt irgendjemand eine Funktion die die dargestellte Zeichenkette zurückgibt? der Befehl FTP_Command scheint nur True oder False zu liefern. Oder hab ich da was übersehen?

    Sinn der Sache wäre es den richtigen Zeichencode anwenden zu können, hier UTF8. In der derzeitigen Form werden Dateinamen die Umlaute enthalten falsch dargestellt, was sich mit einem BinarytoString($String, 4) beheben ließe. Dazu müsste man eben nur wissen ob der Server UTF8 nutzt, oder sich an den Standard hält.

    Ref: http://wiki.filezilla-project.org/Character_Set

    Edit:
    Hier ist ein Beispiel in VB:http://www.trixar.com/~makai/ftpcm1.htm
    benutzt wird die Funktion InetReadFile, allerdings ist es mir ein Rätsel wie das funktioniert

    Einmal editiert, zuletzt von Bitboy (16. Oktober 2012 um 00:23)

  • Im Erfolgsfall sollte @extended das handle für _FTP_FileRead enthalten. Schließe es am Eden per _FTP_FileClose

  • Danke für die Rückmeldung, es scheint allerdings so nicht zu funktionieren. Das Handle ist immer 0 auch wenn die Funktion erfolgreich war.

    [autoit]

    #include <FTPEx.au3>
    #include <Debug.au3>

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

    Local $server = 'ftp.csx.cam.ac.uk'
    Local $username = ''
    Local $pass = ''

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

    Local $Open = _FTP_Open('MyFTP', "", "", "", $INTERNET_FLAG_ASYNC)
    If @error Then ConsoleWrite("Fehler FTP_Open" & @CRLF)
    Local $Conn = _FTP_Connect($Open, $server, $username, $pass, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0)
    If @error Then ConsoleWrite("Fehler FTP_Connect" & @CRLF)
    $ret=_FTP_Command($Conn, "FEAT", $FTP_TRANSFER_TYPE_BINARY)
    If @error Then
    ConsoleWrite("Fehler _FTP_Command" & @CRLF)
    Else
    ConsoleWrite("Handle: " & @Extended & @CRLF) ; Handle ist immer 0
    ConsoleWrite(_FTP_FileRead(@extended, 2))
    EndIf
    $ret=_FTP_Command($Conn, "FEAT", $FTP_TRANSFER_TYPE_BINARY, True) ;Wird der Expect Response auf True gesetzt, bleibt das Script stehen

    [/autoit]

    Benutzt man allerdings die "alte" FTPCommand von hier: http://www.autoitscript.com/forum/topic/99…lp/#entry715061 zusammen mit der GetLastResponse von da: http://www.autoitscript.com/forum/topic/82…en/#entry594032 dann ist in der Variablen $ErrStrg der Rückgabestring.

    Würde mich trotzdem intressieren wo der Fehler bzw. der Unterschied zwischen den verwendeten Funktionen FTPCommand und FTPCommandW liegt.