MiniFTP

  • Hallo!

    Bin AutoIt-Anfänger und suche nach einer aktuellen miniftp.au3, bei der die UDFs zu der aktuellen FTP_Ex.au3 passt.

    Wo muss ich danach suchen?

    MfG
    Friedhelm

  • Bevor man etwas sucht sollte man erstmal wissen was man sucht und es danach in Suchmaschinen freundliche Worte packen. Bei letzterem kann man dir hier ggf. helfen, aber das "was" wurde mir aus deinem Beitrag nicht wirklich klar. Autoit beinhaltet doch bereits eine FTP UDF, also was genau suchst du nun?

  • Hallo misterspeed.

    Wenn ich noch nicht die richtige Forumssprache gefunden habe: ich übe noch. Bin lernfähig.

    Ich möchte die miniFTP.au3 von Alexander Imka (Mini FTP Client - vorstellung) benutzen. Die aus dem Forumsbeitrag herunter geladene Version verwendet aber andere Scriptnamen als das aktuelle AutoIt in der FTPEx.au3.

    Nach mühsamer Anpassung der Namen läuft zwar das Script, aber das Download-Fenster bleibt leer.

    Ich dachte mir, das es wohl irgendwo eine aktuellle Version von der miniFTP.au3 gibt, die die richtigen UDF-Namen enthät und dann auch richtig funktioniert.
    Wenn nicht, muß ich mir wohl das Script Schritt für Schritt erarbeiten und dabei AutoIt und FTP besser kennen lernen..

    MfG
    Friedhelm

    • Offizieller Beitrag

    Ich denke, da wirst du selber dran werkeln müssen. Jonathan ist schon ewig nicht mehr aktiv im Forum.

  • Funktioniert doch. Musste nur die Funktionsnamen anpassen. Am Anfang hab ich dann noch den passiv mode aktiviert und die Möglichkeit eines abweichenden Ports berücksichtigt. Was allerdings nicht funktioniert ist der Download eines ganzen Ordners. Man kann damit im Moment nur einzelne Dateien direkt im Stammverzeichnis herunterladen, mehr hatte der ursprüngliche Autor des "FTP Clients" wohl nicht beabsichtigt. Meiner Meinung nach unbrauchbar. Wozu gibt es Filezilla und co. ?

    Ob die restlichen Funktionen so noch funktionieren habe ich nicht getestet. Das requireadmin am Scriptanfang dürfte im übrigen überflüssig sein. Ich sehe nichts im Script das Adminrechte benötigen würde.

    Spoiler anzeigen
    [autoit]


    ;Copyright Alexander Imka ©
    #RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPEx.au3>

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

    $serveradresse = "************"
    $port = 21
    $passivemode = 1 ; default 0
    $username = "************"
    $passwort = "************"

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

    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort,$passivemode,$port)
    $filelist = _Ftp_ListToArray2D ($connection)

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

    ;GUI CODE STARTET HIER;
    $Gui = GUICreate("mini FTP Client",310,500)
    $header = GUICtrlCreateLabel("Datei auswählen",65,10)
    $liste = GUICtrlCreateList("",20,30,200,450)
    $downloadbutton = GUICtrlCreateButton("Download",235,30,55,50)
    $uploadbutton = GUICtrlCreateButton("Upload",235,100,55,50)
    $filedel = GUICtrlCreateButton("Delete",235,170,55,50)
    $refresh = GUICtrlCreateButton("Refresh",235,240,55,50)
    $rename = GUICtrlCreateButton("Rename",235,310,55,50)

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

    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next

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

    GUISetState(@SW_SHOW)
    ;GUI CODE ENDET HIER;

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

    while 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _FTP_Close($connection)
    ;_FTP_UnInit()
    Exit
    Case $DownloadButton
    $DownFile = GUICtrlRead ($liste)
    If $DownFile = "" Then
    MsgBox (16, "STOP", "Du musst erst eine Datei auswählen")
    Else
    DirCreate (@ScriptDir&"\Download")
    _FTP_ProgressDownload($connection, @ScriptDir&"\Download\"&$DownFile, "/"&$DownFile)
    EndIf
    Case $uploadbutton
    $UploadPfad = FileOpenDialog("Auswählen",@ScriptDir,"Alle (*.*)")
    If $UploadPfad = "" Then
    MsgBox (0, "Achtung!", "Erst eine Datei auswählen!")
    Else
    $dateinamensplit = StringSplit($UploadPfad,"\")
    $teile = $dateinamensplit[0]
    Global $UploadVorgang = _FTP_ProgressUpload($connection, $UploadPfad, "/"&$dateinamensplit[$teile])
    If $UploadVorgang = 1 Then
    MsgBox (64, "Okay", "hochladen erfolgreich")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox (16, "Error", "Aufgrund eines Fehlers wird das Programm beendet!")
    Exit
    EndIf
    EndIf
    Case $filedel
    $del = MsgBox(52,"Aktion bestätigen","Die datei " & GUICtrlRead($liste) & " wirklich löschen?")
    if $del = 6 Then
    $s_RemoteFile = GUICtrlRead($liste)
    _FTP_FileDelete($connection, $s_RemoteFile)
    MsgBox(64,"ok","Ok, Die Datei wurde erfolgreich gelöscht")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox(16,"abbruch","Aktion abgebrochen")
    EndIf
    Case $refresh
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    MsgBox(0,"ok","Erfolgreich aktualisiert")
    ;~ MsgBox(64,"nönö","schon vergessen? das geht noch nit!")
    Case $rename
    $s_Existing = GUICtrlRead($liste)
    $s_New = InputBox("Rename","in welchen Namen soll die Datei umbenannt werden?",$s_Existing)
    if Not @error then
    _FTP_FileRename($connection, $s_Existing, $s_New)
    MsgBox(0,"ok","Die Datei wurde umbeannt")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox(64,"oioi","Aktion abgebrochen!")
    EndIf
    EndSwitch
    WEnd

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

    Einmal editiert, zuletzt von misterspeed (30. März 2013 um 19:15)

  • Hallo Friedhelm39,

    ich habe auf die Schnelle (C&P) die miniFTP aktualisiert:

    Spoiler anzeigen
    [autoit]

    ;Copyright Alexander Imka ©
    #RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPEx.au3>

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

    $serveradresse = "ftp.csx.cam.ac.uk"
    $username = ""
    $passwort = ""

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

    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open, 'ftp.csx.cam.ac.uk', '', '', 0)
    $filelist = _Ftp_ListToArray($connection)

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

    ;GUI CODE STARTET HIER;
    $Gui = GUICreate("mini FTP Client",310,500)
    $header = GUICtrlCreateLabel("Datei auswählen",65,10)
    $liste = GUICtrlCreateList("",20,30,200,450)
    $downloadbutton = GUICtrlCreateButton("Download",235,30,55,50)
    $uploadbutton = GUICtrlCreateButton("Upload",235,100,55,50)
    $filedel = GUICtrlCreateButton("Delete",235,170,55,50)
    $refresh = GUICtrlCreateButton("Refresh",235,240,55,50)
    $rename = GUICtrlCreateButton("Rename",235,310,55,50)

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

    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i]&"|")
    Next

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

    GUISetState(@SW_SHOW)
    ;GUI CODE ENDET HIER;

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

    while 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _FTP_Close($connection)
    Exit
    Case $DownloadButton
    $DownFile = GUICtrlRead ($liste)
    If $DownFile = "" Then
    MsgBox (16, "STOP", "Du musst erst eine Datei auswählen")
    Else
    DirCreate (@ScriptDir&"\Download")
    _FTP_ProgressDownload($connection, @ScriptDir&"\Download\"&$DownFile, "/"&$DownFile)
    EndIf
    Case $uploadbutton
    $UploadPfad = FileOpenDialog("Auswählen",@ScriptDir,"Alle (*.*)")
    If $UploadPfad = "" Then
    MsgBox (0, "Achtung!", "Erst eine Datei auswählen!")
    Else
    $dateinamensplit = StringSplit($UploadPfad,"\")
    $teile = $dateinamensplit[0]
    Global $UploadVorgang = _FTP_ProgressUpload($connection, $UploadPfad, "/"&$dateinamensplit[$teile])
    If $UploadVorgang = 1 Then
    MsgBox (64, "Okay", "hochladen erfolgreich")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i]&"|")
    Next
    Else
    MsgBox (16, "Error", "Aufgrund eines Fehlers wird das Programm beendet!")
    Exit
    EndIf
    EndIf

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

    Case $filedel
    $del = MsgBox(52,"Aktion bestätigen","Die datei " & GUICtrlRead($liste) & " wirklich löschen?")
    if $del = 6 Then
    $s_RemoteFile = GUICtrlRead($liste)
    _FTP_FileDelete($connection, $s_RemoteFile)
    MsgBox(64,"ok","Ok, Die Datei wurde erfolgreich gelöscht")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i]&"|")
    Next
    Else
    MsgBox(16,"abbruch","Aktion abgebrochen")
    EndIf

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

    Case $refresh
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i]&"|")
    Next
    MsgBox(0,"ok","Erfolgreich aktualisiert")
    ;~ MsgBox(64,"nönö","schon vergessen? das geht noch nit!")

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

    Case $rename
    $s_Existing = GUICtrlRead($liste)
    $s_New = InputBox("Rename","in welchen Namen soll die Datei umbenannt werden?",$s_Existing)
    if Not @error then
    _FTP_FileRename($connection, $s_Existing, $s_New)
    MsgBox(0,"ok","Die Datei wurde umbeannt")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i]&"|")
    Next
    Else
    MsgBox(64,"oioi","Aktion abgebrochen!")
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]

    Zumindest unter 3.3.6.1 startet das Skript jetzt. Da ich von einem Bug in der aktuellen Stable bei _Ftp_ListToArray2D weis habe ich diese Funktion mit der weiterhin funktionierenden _Ftp_ListToArray getauscht. Da Jonathan eh nur die Dateinamen ausgewertet hat ist es für dieses Skript ein vollwertiger Ersatz. Den Download habe ich von einem öffentlichen Server getestet, er funktioniert. Die anderen Funktionen musst du noch testen, da ich derzeit keinen FTP zur Verfügung habe.

    Edit: MisterSpeed hat seinem Namen Ehre gemacht.
    mfg autoBert