_FTP_GetFilesFolder_Rekursiv
; #FUNCTION#
;==================================================================================================
; Function Name: _FTP_GetFilesFolder_Rekursiv($oFTPConnect, $sFolder = "", $iDir = -1, $sExt = "*")
; Description: Rekursive Auflistung von Ordnern
; Parameter(s): $oFTPConnect FTP Connection, wie sie von _FTP_Connect() zurückgegeben wird
; $sFolder der Basispfad für die Auflistung ("" ist unterste Ebene)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; $sExt Erweiterung für Dateiauswahl "*" für alle (Standard)
; 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($oFTPConnect, $sFolder = "", $iDir = -1, $sExt = "*")
Local $retarray[16777216], $list, $counter = 1
Global $__RemoteFolderListResult[1]
__FTPGetAllFolders($sFolder)
Switch $iDir
Case -1, 0
For $i = 1 To UBound($__RemoteFolderListResult) - 1
_FTP_DirSetCurrent($oFTPConnect, $__RemoteFolderListResult[$i])
If $iDir = -1 Then
$retarray[$counter] = $__RemoteFolderListResult[$i]
$counter += 1
EndIf
$list = _FTP_ListToArray($oFTPConnect, 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
Func __FTPGetAllFolders($oFTPConnect, $sFolder = "")
If Not IsDeclared("RemoteFolderListResult") Then Global $__RemoteFolderListResult[1]
Local $Check
If $sFolder = "" Then
_FTP_DirSetCurrent($oFTPConnect, "/")
Else
_FTP_DirSetCurrent($oFTPConnect, $sFolder)
EndIf
$FTPFolderList = _FTP_ListToArray($oFTPConnect, 1)
_ArrayAdd($__RemoteFolderListResult, _FTP_DirGetCurrent($oFTPConnect))
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($oFTPConnect), StringInStr(_FTP_DirGetCurrent($oFTPConnect), "/", 0, -1) - 1)
_FTP_DirSetCurrent($oFTPConnect, $t)
If $t = "" Then _FTP_DirSetCurrent($oFTPConnect,"/")
$tmp_FTPFolderList = _FTP_ListToArray($oFTPConnect, 1)
If @error Then $tmp_FTPFolderList = _FTP_ListToArray($oFTPConnect, 1)
For $i = 1 To $tmp_FTPFolderList[0]
If $tmp_FTPFolderList[$i] = "." or $tmp_FTPFolderList[$i] = ".." Then ContinueLoop
If _ArraySearch($__RemoteFolderListResult, _FTP_DirGetCurrent($oFTPConnect) & "/" & $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($oFTPConnect) & "/" & $FTPFolderList[$Subfolder])
Next
EndFunc ;==>_FTPGetAllFolders
Hier eine Funktion, die ich für einen anderen User geschrieben habe, vielleicht kann die ja jemand brauchen.
Ihr könnt damit alle Dateien und/ oder Ordner auf einem Webspace anzeigen lassen.
Feedback zu Bugs oder Änderungen ist erwünscht