Mit TCP eine Datei auf FTP server hochladen/runterladen

  • Spoiler anzeigen
    [autoit]

    #include <FTPEx.au3>
    #include <Array.au3>
    $open = _FTP_Open("myftp")
    $server = ""
    $user = ""
    $pass = ""
    $FTPConnect = _FTP_Connect($open, $server, $user, $pass)
    $Return_folders = _FTP_GetFilesFolder_Rekursiv($FTPConnect, "", 1)
    _ArrayDisplay($Return_folders)
    _FTP_Close($open)

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

    ; #FUNCTION#
    ;==================================================================================================
    ; Function Name: _FTP_GetFilesFolder_Rekursiv($FTPConnect, $Folder = "", $iDir = -1, $sExt = "*")
    ; Description: Rekursive Auflistung von Ordnern
    ; Parameter(s): $FTPConnect FTP Connection, wie sie von _FTP_Connect() zurückgegeben wird
    ; $sPath der Basispfad für die Auflistung ("" ist unterste Ebene)
    ; $sExt Erweiterung für Dateiauswahl "*" für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; Return Value(s): Array mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _FTPGetAllFolders
    ; Link ..........;
    ;
    ;==================================================================================================
    Func _FTP_GetFilesFolder_Rekursiv($FTPConnect, $Folder = "", $iDir = -1, $sExt = "*")
    Local $retarray[16777216], $list, $counter = 1
    _FTPGetAllFolders($Folder)
    Switch $iDir
    Case -1, 0
    For $i = 1 To UBound($RemoteFolderListResult) - 1
    _FTP_DirSetCurrent($FTPConnect, $RemoteFolderListResult[$i])
    If $iDir = -1 Then
    $retarray[$counter] = $RemoteFolderListResult[$i]
    $counter += 1
    EndIf
    $list = _FTP_ListToArray($FTPConnect, 2)
    For $k = 1 To $list[0]
    If $sExt <> '*' Then
    If StringRight($list[$k], StringLen($sExt)) = $sExt Then
    $retarray[$counter] = $RemoteFolderListResult[$i] & "/" & $list[$k]
    $counter += 1
    EndIf
    Else
    $retarray[$counter] = $RemoteFolderListResult[$i] & "/" & $list[$k]
    $counter += 1
    EndIf
    Next
    Next
    $retarray[0] = $counter
    ReDim $retarray[$counter + 1]
    Return $retarray
    Case 1
    $retarray = $RemoteFolderListResult
    $RemoteFolderListResult = ""
    Return $retarray
    EndSwitch
    EndFunc ;==>_FTP_GetFilesFolder_Rekursiv

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

    Func _FTPGetAllFolders($Folder = "")
    If Not IsDeclared("RemoteFolderListResult") Then Global $RemoteFolderListResult[1]
    Local $Check
    If $Folder = "" Then
    _FTP_DirSetCurrent($FTPConnect, "/")
    Else
    _FTP_DirSetCurrent($FTPConnect, $Folder)
    EndIf
    $FTPFolderList = _FTP_ListToArray($FTPConnect, 1)
    _ArrayAdd($RemoteFolderListResult, _FTP_DirGetCurrent($FTPConnect))
    If not IsArray($FTPFolderList) Or $FTPFolderList[0] = 0 Or ($FTPFolderList[0] = 2 AND $FTPFolderList[1] = "." AND $FTPFolderList[2] = "..") Then
    $Check = False
    While $Check = False
    $t = StringLeft(_FTP_DirGetCurrent($FTPConnect), StringInStr(_FTP_DirGetCurrent($FTPConnect), "/", 0, -1) - 1)
    _FTP_DirSetCurrent($FTPConnect, $t)
    If $t = "" Then _FTP_DirSetCurrent($FTPConnect,"/")
    $tmp_FTPFolderList = _FTP_ListToArray($FTPConnect, 1)
    If @error Then $tmp_FTPFolderList = _FTP_ListToArray($FTPConnect, 1)
    For $i = 1 To $tmp_FTPFolderList[0]
    If $tmp_FTPFolderList[$i] = "." or $tmp_FTPFolderList[$i] = ".." Then ContinueLoop
    If _ArraySearch($RemoteFolderListResult, _FTP_DirGetCurrent($FTPConnect) & "/" & $tmp_FTPFolderList[$i]) = -1 Then
    $Check = True
    ExitLoop
    EndIf
    Next
    WEnd
    Return 0
    EndIf
    For $Subfolder = 1 To $FTPFolderList[0]
    If $FTPFolderList[$Subfolder] = "." or $FTPFolderList[$Subfolder] = ".." Then ContinueLoop
    _FTPGetAllFolders(_FTP_DirGetCurrent($FTPConnect) & "/" & $FTPFolderList[$Subfolder])
    Next
    EndFunc ;==>_FTPGetAllFolders

    [/autoit]