UDF > FTPEx >


_FTP_ProgressDownload

Télécharge un fichier en mode binaire en affichant une barre de progression ou en appelant une fonction définie par l'utilisateur

#include <FTPEx.au3>
_FTP_ProgressDownload ( $hFTPSession, $sLocalFile, $sRemoteFile [, $hFunctionToCall = 0] )

Paramètres

$hFTPSession Handle retourné par _FTP_Connect().
$sLocalFile Le fichier local à créer.
$sRemoteFile Le fichier source distant.
$hFunctionToCall [optionnel] Une variable affectée par la fonction définie par l'utilisateur pour mettre à jour une barre de progression ou réagir à l'interaction de l'utilisateur, comme l'interruption ou à la sortie du processus. Par défaut = Aucun. Voir Remarques.

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0.
@error: -1 - Le fichier local n'a pas pu être créé
-2 - Impossible d'obtenir la taille du fichier distant
-3 - L'ouverture du fichier distant a échoué
-4 - La lecture du fichier distant a échoué
-5 - La fermeture du fichier distant a échoué
-6 - Le téléchargement a été interrompu par PercentageFunc et retourne à la fonction appelée
-7 - L'écriture du fichier local a échoué

Remarque

Informations sur $hFunctionToCall:
    Paramètre: $iPercentage - Le pourcentage de la progression
    Valeurs de retour:
        Continue le téléchargement - 1
        Abandonne le téléchargement - zéro ou inférieur à zéro par exemple 0 ou -1
    Ces valeurs sont retournées par _FTP_ProgressDownload(), de sorte que vous pouvez réagir sur différentes actions comme l'Abandon par l'utilisateur, la fermeture de l'App ou le TimeOut du processus.

Exemples

Exemple 1

#include <FTPEx.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <ProgressConstants.au3>

Global $g_sRemoteFile = "/pub/software/databases/rt/SRPMS/ucs-local-modperl-2.0.3-1.src.rpm"
Global $g_sLocalFile = @TempDir & "\temp.tmp"
FileDelete($g_sLocalFile)

Local $sServer = 'ftp.csx.cam.ac.uk'
Local $sUsername = ''
Local $sPass = ''

Local $hInternetSession = _FTP_Open('MyFTP Control')
; Passive permet plus de protections FTP pour répondre
Local $hFTPSession = _FTP_Connect($hInternetSession, $sServer, $sUsername, $sPass, 1)

Example()

_FTP_Close($hInternetSession)

Func Example()
    Local $sFunctionToCall = "_UpdateProgress"
    ProgressOn("Download Progress", $g_sRemoteFile)
    _FTP_ProgressDownload($hFTPSession, $g_sLocalFile, $g_sRemoteFile, $sFunctionToCall)
    ProgressOff()
EndFunc   ;==>Example

Func _UpdateProgress($iPercent)
    ProgressSet($iPercent, Int($iPercent) & "%")
    If _IsPressed("77") Then Return 0 ; Abandon sur F8
    Return 1 ; 1 pour continuer télécharger
EndFunc   ;==>_UpdateProgress


Exemple 2

#include <FTPEx.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>

Global $g_sRemoteFile = "/pub/software/databases/rt/SRPMS/ucs-local-modperl-2.0.3-1.src.rpm"
Global $g_sLocalFile = @TempDir & "\temp.tmp"
FileDelete($g_sLocalFile)

Local $sServer = 'ftp.csx.cam.ac.uk'
Local $sUsername = ''
Local $sPass = ''

Local $hInternetSession = _FTP_Open('MyFTP Control')
; Passive permet plus de protections FTP pour répondre
Local $hFTPSession = _FTP_Connect($hInternetSession, $sServer, $sUsername, $sPass, 1)

Global $g_idProgressBarCtrl, $g_idBtn_Cancel
Example()

_FTP_Close($hInternetSession)

Func Example()
    ; Crée une GUI
    GUICreate("My GUI download Progressbar", 220, 100, 100, 200)
    GUICtrlCreateLabel($g_sRemoteFile, 10, 10)
    $g_idProgressBarCtrl = GUICtrlCreateProgress(10, 40, 200, 20, $PBS_SMOOTH)
    GUICtrlSetColor(-1, 32250); ne fonctionne pas avec les styles de Windows XP
    $g_idBtn_Cancel = GUICtrlCreateButton("Cancel", 75, 70, 70, 20)
    GUISetState(@SW_SHOW)

    Local $sFunctionToCall = "_UpdateGUIProgressBar"
    _FTP_ProgressDownload($hFTPSession, $g_sLocalFile, $g_sRemoteFile, $sFunctionToCall)
EndFunc   ;==>Example

Func _UpdateGUIProgressBar($iPercent)
    GUICtrlSetData($g_idProgressBarCtrl, $iPercent)
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit -1 ; _FTP_DownloadProgress s'interrompt avec -1, de sorte que vous pouvez quitter votre application après
        Case $g_idBtn_Cancel
            Exit -2 ; Juste Annuler, sans valeur spéciale de retour
    EndSwitch
    Return 1 ; Sinon, poursuivre le téléchargement
EndFunc   ;==>_UpdateGUIProgressBar