FTP dateien hochladen und runterladen

  • moin moin
    ich habe folgendes problem:
    ich hab nen ftp server und mir ein script gebastelt, womit ich daten richtig hochladen kann und runterladen, aber nur in bestimmte ordner.
    der ordner wird in einem treeview fenster angezeigt und kann auch ausgewählt werden.
    das funktioniert auch, und er connected auch, nur lädt er nichts hoch und runterladen tut es auch nichts.
    hier die func aus dem script:

    download
    [autoit]

    #Include <GuiTreeView.au3>
    #Include <FTPEx.au3>

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

    Global $ip = @IPAddress1, $loginname = "ordner"
    GUICreate("test", 300, 500)
    $scripttree = GUICtrlCreateTreeView(0, 0, 300, 450)
    $scriptfiles = GUICtrlCreateTreeViewItem("scriptfiles", $scripttree)
    $unterordner = GUICtrlCreateTreeViewItem("ordner",$scriptfiles)
    GUICtrlCreateTreeViewItem("testfile1.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile2.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile3.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile0.txt", $scriptfiles)
    $button = GUICtrlCreateButton("Download", 10, 450)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $button
    $hSelect = _GUICtrlTreeView_GetSelection($scripttree)
    $sSelectText = _GUICtrlTreeView_GetText($scripttree, $hSelect)
    $sParentText = _GUICtrlTreeView_GetText($scripttree, _GUICtrlTreeView_GetParentHandle($scripttree, $hSelect))
    If $sParentText = "filterscripts" Or $sParentText = "scriptfiles" Or $sParentText = "gamemodes" Then
    If _GUICtrlTreeView_GetChildCount($scripttree, $hSelect) = 0 Then
    $open = _FTP_Open("samp")
    $ftpconnect = _FTP_Connect($open, $ip, "xxx", "xxx", 1, 509)
    Sleep(100)
    _FTP_DirSetCurrent($ftpconnect, $loginname & "/" & $sParentText)
    Sleep(100)
    _FTP_ProgressDownload($ftpconnect, @DesktopDir & "/" & $sSelectText, $sSelectText)
    _FTP_Close($open)
    Else
    $open = _FTP_Open("samp")
    $ftpconnect = _FTP_Connect($open, $ip, "xxx", "xxx", 1, 509)
    _FTP_DirSetCurrent($ftpconnect, $loginname & "/" & $sParentText & "/" & $sSelectText)
    DirCreate(@DesktopDir & $sSelectText)
    $list = _Ftp_ListToArray($ftpconnect, 2)
    For $i = 1 To $list[0]
    _FTP_ProgressDownload($ftpconnect, @DesktopDir & "/" & $sSelectText & "/" & $list[$i], $list[$i])
    Next
    _FTP_Close($open)
    EndIf
    Else
    $sParentText2 = _GUICtrlTreeView_GetParentHandle($scripttree, $sParentText)
    $open = _FTP_Open("samp")
    $ftpconnect = _FTP_Connect($open, $ip, "xxx", "xxx", 1, 509)
    _FTP_DirSetCurrent($ftpconnect, $loginname & "/" & $sParentText2 & "/" & $sParentText)
    _FTP_ProgressDownload($ftpconnect, @DesktopDir & "/" & $sSelectText, $sSelectText)
    _FTP_Close($open)
    EndIf
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]
    upload
    [autoit]

    #Include <GuiTreeView.au3>
    #Include <FTPEx.au3>
    #Include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $maxordner = 20
    Global $scriptfilesitem[$maxordner][2],$loginname = "testordner",$ip = @IPAddress1

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

    $test = GUICreate("test", 300, 500)
    $scripttree = GUICtrlCreateTreeView(0, 0, 300, 450)
    $scriptfiles = GUICtrlCreateTreeViewItem("scriptfiles", $scripttree)
    $unterordner = GUICtrlCreateTreeViewItem("ordner",$scriptfiles)
    GUICtrlCreateTreeViewItem("testfile1.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile2.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile3.txt", $unterordner)
    GUICtrlCreateTreeViewItem("testfile0.txt", $scriptfiles)
    $button = GUICtrlCreateButton("Download", 10, 450)
    $menu = GUICtrlCreateContextMenu($button)
    $scriptfilesitem[0][0] = GUICtrlCreateMenuItem("scriptfiles",$menu)
    $scriptfilesitem[0][1] = "scriptfiles"
    GUICtrlCreateMenuItem("",$menu)
    $scriptfilesitem[1][0] = GUICtrlCreateMenuItem("ordner",$menu)
    $scriptfilesitem[1][1] = "ordner"

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

    $auswahlgui = GUICreate("Scriptfile Hochladen", 406, 93)
    GUICtrlSetDefColor(0x000000)
    GUISetBkColor(0xFFFFFF)
    GUICtrlCreateLabel("Bitte wählen sie aus, welches format hochgeladen werden soll", 56, 16, 296, 17)
    $dir = GUICtrlCreateButton("Ordner", 48, 56, 75, 25, $WS_GROUP)
    $data = GUICtrlCreateButton("Datei", 152, 56, 75, 25, $WS_GROUP)
    $cancelauswahl = GUICtrlCreateButton("Abbrechen", 256, 56, 75, 25, $WS_GROUP)

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

    GUISetState(@SW_SHOW,$test)

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

    While 1
    $msg = GUIGetMsg(1)
    For $i = 0 To $maxordner - 1
    Select
    Case $msg[1] = $test
    Switch $msg[0]
    Case $button
    MouseClick("secondary")
    Case -3
    Exit
    Case $scriptfilesitem[$i][0]
    GUISetState(@SW_SHOW, $auswahlgui)
    If $scriptfilesitem[$i][1] <> "scriptfiles" Then
    GUICtrlSetState($dir,$GUI_DISABLE)
    Else
    GUICtrlSetState($dir,$GUI_ENABLE)
    EndIf
    While 1
    $amsg = GUIGetMsg()
    Switch $amsg
    Case $dir
    $auswahl = 1
    $cancel = 0
    GUISetState(@SW_HIDE, $auswahlgui)
    ExitLoop
    Case $data
    $auswahl = 2
    $cancel = 0
    GUISetState(@SW_HIDE, $auswahlgui)
    ExitLoop
    Case $cancelauswahl, -3
    $cancel = 1
    GUISetState(@SW_HIDE, $auswahlgui)
    ExitLoop
    EndSwitch
    WEnd
    If $cancel = 0 And $auswahl = 1 Then
    $updir = FileSelectFolder("Welcher ordner soll hochgeladen werden", @DesktopDir, 7)
    If @error Then $cancel = 1
    $upfile = ""
    ElseIf $cancel = 0 And $auswahl = 2 Then
    $upfile = FileOpenDialog("Welche datei soll hochgeladen werden?", @DesktopDir, "Alle Dateien(*.*)")
    If @error Then $cancel = 1
    $updir = ""
    EndIf
    If $cancel = 0 And $updir <> "" Then
    $split = StringSplit($updir, "/", 1)
    $open = _FTP_Open("samp")
    $ftpconnect = _FTP_Connect($open, $ip, "xxx", "xxx", 1, 509)
    _FTP_DirSetCurrent($ftpconnect, $loginname & "/scriptfiles")
    _FTP_DirCreate($ftpconnect, $split[$split[0]])
    _FTP_DirSetCurrent($ftpconnect, $split[$split[0]])
    $filelist = _FileListToArray($updir)
    For $u = 1 To $filelist[0]
    _FTP_ProgressUpload($ftpconnect, $updir & $filelist[$u], $filelist[$u])
    Next
    _FTP_Close($open)
    MsgBox(0, "Ordner Hochladen", "Der Ordner wurde erfolgreich hochgeladen")
    ElseIf $cancel = 0 And $upfile <> "" Then
    $open = _FTP_Open("samp")
    $ftpconnect = _FTP_Connect($open, $ip, "xxx", "xxx", 1, 509)
    _FTP_DirSetCurrent($ftpconnect, $loginname & "/scriptfiles")
    If $i <> 0 Then _FTP_DirSetCurrent($ftpconnect, $scriptfilesitem[$i][1])
    $split = StringSplit($upfile, "/", 1)
    _FTP_ProgressUpload($ftpconnect, $upfile, $split[$split[0]])
    _FTP_Close($open)
    MsgBox(0, "Datei Hochladen", "Die Datei wurde erfolgreich Hochgeladen")
    EndIf
    EndSwitch
    EndSelect
    Next
    WEnd

    [/autoit]

    mir werden keine errors und auch keine warnings angezeigt
    EDIT: hab mal die gui´s zum script gelegt, sodass mans einfach kopieren kann und testen kann (nur eben beim ftp_connect die logindaten ändern)

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

    3 Mal editiert, zuletzt von PCKing (17. Juli 2010 um 01:31)

  • habs grade ohne dem passivem modus probiert, er kommt genausoweit wie vorher auch, er loggt sich nur ein und danach wieder aus

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner