Je souhaite récupérer des fichiers sur un serveur FTP en utilisant la fonction suivante, mais elle ne me retourne rien alors que sur d'autres serveurs elle fonctionne bien...
Le serveur qui ne fonctionne pas est sous Windows Server 2008 R2.
Merci par avance pour votre aide.
► Afficher le texte
Code : Tout sélectionner
#Include <FTPEx.au3>
#Include <Array.au3>
#include <Date.au3>
Global $aListFTP[1][4], $Output, $aFile
_FTP_Download($aListFTP, "/MonDossier", "MonServeur", 1)
_ArrayDisplay($aListFTP)
Func _FTP_Download(ByRef $aFTPFileList, $sRemotePath, $sHost, $iFlag, $sLogin = "", $sPassword = "", $iPassive = 1, $iPort = 21)
Local $hFtp, $hSession, $aFind, $hFind, $Result = 1
$hFtp = _FTP_Open('MyFtp')
$hSession = _FTP_Connect($hFtp, $sHost, $sLogin, $sPassword, $iPassive, $iPort)
$aFind = _FTP_FindFileFirst($hSession, $sRemotePath, $hFind)
While Not @error
$Path = $sRemotePath & '/' & $aFind[10]
If BitAND($aFind[1], $FILE_ATTRIBUTE_DIRECTORY) Then
If Not _FTP_Download($aFTPFileList, $sRemotePath & '/' & $aFind[10], $sHost, $iFlag, $sLogin, $sPassword, $iPassive, $iPort) Then
Return 0
EndIf
If $iFlag = 0 Or $iFlag = 2 Then
Local $iUBound = UBound($aFTPFileList)
ReDim $aFTPFileList[$iUBound + 1][4]
$aFTPFileList[$iUBound][0] = $sRemotePath & '/' & $aFind[10] & '/'
$aFTPFileList[$iUBound][0] = $aFind[10]; & '/'
EndIf
Else
If $iFlag = 0 Or $iFlag = 1 Then
Local $iUBound = UBound($aFTPFileList)
ReDim $aFTPFileList[$iUBound + 1][4]
$aFTPFileList[$iUBound][0] = $sRemotePath & '/' & $aFind[10]
$aFTPFileList[$iUBound][1] = _FTPFileTimeLoHiToStr($aFind[6], $aFind[7])
$aFTPFileList[$iUBound][2] = _FTPFileSizeLoHi($aFind[8], $aFind[9])
EndIf
EndIf
$aFind = _FTP_FindFileNext($hFind)
WEnd
_FTP_FindFileClose($hFind)
_FTP_Close($hFtp)
$aFTPFileList[0][0] = UBound($aFTPFileList) - 1
Return $Result
EndFunc ;==>_FTP_Download
;===============================================================================
;
; Function Name: _FTPFileTimeLoHiToStr()
; Description: Get FileTime String
; Parameter(s):
; Requirement(s): DllCall, date.au3
; Return Value(s): On Success - Date
; On Failure - "" (empty String)
; Author(s): Prog@ndy
;
;===============================================================================
Func _FTPFileTimeLoHiToStr($LoDWORD, $HiDWORD)
Local $FileTime = DllStructCreate("dword;dword")
If Not $LoDWORD And Not $HiDWORD Then Return SetError(1, 0, "")
DllStructSetData($FileTime, 1, $LoDWORD)
DllStructSetData($FileTime, 2, $HiDWORD)
Local $date = _Date_Time_FileTimeToStr($FileTime)
Return SetError(@error, @extended, $date)
EndFunc ;==>_FTPFileTimeLoHiToStr
;===============================================================================
;
; Function Name: _FTPFileSizeLoHi()
; Description: Get FileSize
; Parameter(s):
; Return Value(s): Size
; Author(s): Prog@ndy
;
;===============================================================================
Func _FTPFileSizeLoHi($LoDWORD, $HiDWORD)
Return BitOR(BitShift($LoDWORD, -32), BitAND($HiDWORD, 0xFFFFFFFF))
EndFunc ;==>_FTPFileSizeLoHi

