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] )
$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. |
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é |
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.
#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
#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