Page 1 sur 1

[..] Upload un dossier par FTP + barre progression

Posté : mar. 28 janv. 2014 02:15
par phifi
Bonjour,

Depuis plusieurs jours, je suis à la recherche d'un code pour afficher une barre de progression pour indiquer aux utilisateurs de patienter, l'upload est en cours.
Je ne cherche pas à avoir une barre de progression qui indique le % restant, mais tout simple (pour simplifier les choses) une barre qui défile de gauche à droite (et vis-et-versa...).

- Upload FTP du dossier fonctionne
- J'ai bien une barre demandant de patienter qui fonctionne (récupéré sur ce forum, très jolie d'ailleurs :))
- mais je n'arrive pas à faire fonctionner les 2 fonctions en même temps (l'un ou l'autre).

C'est bien sur le 3ème point que j'ai besoin de vous, par avance merci.

Pendant l'upload (fonction : _UploadFTP()), je désire afficher la barre de défilement (fonction : _SliderRight()).

Voici mon code actuel :

Code : Tout sélectionner

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


HotKeySet("{ESC}", "endscript")

$Ca = GUICreate ( "" , 250 , 46 , -1 , -1 , $WS_POPUP,$WS_EX_TOPMOST+$WS_EX_WINDOWEDGE+$WS_EX_DLGMODALFRAME)
GUISetBkColor ( 0x000000 , $Ca )
$Da = GUICtrlCreateLabel ("    Transfert en cours ...",  23, -1, 250,23)
GuiCtrlCreateGraphic(-1, 1, 252,45,$SS_SUNKEN)
GUICtrlSetColor(-1, 0XFFFFFF)
GUICtrlSetColor ( $Da, 0XFFFFFF)
GUICtrlSetFont ($Da, "12" , "50" , "" , "Courrier New")
GUICtrlCreateGraphic(1, 23, 250,20)
GUICtrlSetColor(-1, 0x007F00)
GuiSetState(@SW_SHOW)
$PID=0

_UploadFTP()

Func _UploadFTP()
$s_ServerName = 'mon_IP'
$s_Username = 'monlogin'
$s_Password = 'monMdP'
$sLocalFolder = '.\test'
$sRemoteFolder = 'test'
$bRecursivePut = '0'
$i_Passive = '1'
$l_InternetSession = _FTP_Open('MyFTP Control')
$hFTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive)
_FTP_DirCreate ( $hFTPSession, $sRemoteFolder )
_FTP_DirPutContents ( $hFTPSession, $sLocalFolder, $sRemoteFolder, $bRecursivePut )
$Ftpc = _FTP_Close($l_InternetSession)
    $PID=1
    MsgBox($MB_SYSTEMMODAL, "Terminé", "Envoi de vos fichiers logs terminé")
EndFunc

Func _test()
    $Passage=1
    if $Passage=1 Then _SliderRight()
    Return 1
EndFunc

Func _getmsg()

    $Msg = GUIGetMsg()
    If $Msg = $GUI_EVENT_CLOSE Then Exit

    ; Test du process. Si inexistant, on sort.
    If $PID=1 Then endscript()

EndFunc

Func _SliderRight()
        Local $newcolor,$color = 0x050000
    For $m = 0 To 245 Step 5
        $newcolor += $color
        $ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
        GUICtrlSetBkColor($ba, $newcolor)
        Sleep(50)
    Next
    _getmsg()
    _SliderLeft()
EndFunc

Func _SliderLeft()
    Local $backcolor,$color = 0x050000
    For $m = 245 To 0 Step -5
        $backcolor += $color
        $ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
        GUICtrlSetBkColor($ba, $backcolor)
        Sleep(50)
    Next
    _getmsg()
    _SliderRight()
EndFunc

Func endscript()
    Exit
EndFunc
PS : c'est mon tout 1er programme, et je ne suis pas développeur

Merci,
Cdt,
Phifi

Re: [..] Upload un dossier par FTP + barre progression

Posté : mar. 28 janv. 2014 04:00
par Hackoo
Salut :)
Moi aussi je ne suis pas un expert en Autoit, mais j'ai essayé ce code trouvé dans le Net et ça marche bien avec une barre de progression ==> http://pastebin.com/ZsbHUUHC
► Afficher le texteCode de test

Re: [..] Upload un dossier par FTP + barre progression

Posté : mar. 28 janv. 2014 07:55
par Tlem
Bonjour phifi.
Si vous prenez le temps de faire quelques recherches, vous trouverez sur le forum un sujet concernant les barres de progression. J'en avais proposé une comme vous recherchez. ;)

Re: [..] Upload un dossier par FTP + barre progression

Posté : mar. 28 janv. 2014 20:01
par phifi
Bonjour,

Merci de vos réponses.

Hackoo : j'avais bien compris le fonctionnement de la fonction "_FTP_ProgressUpload", qui fonctionne malheureusement seulement pour l'upload d'un fichier, et non le contenu complet d'un dossier 'comme le propose "_FTP_DirPutContents"). A moins d'un loupé de mon côté ?

Tlem : j'ai fait beaucoup de recherche avant de poster ce message, c'est ma philosophie. Et à ce jour, je n'ai pas encore trouvé mon bonheur. j'avais effectivement trouvé lors de mais recherche un de vos posts, et j'ai d'ailleurs utilisé un de vos scripts, trouvé ici http://www.autoitscript.fr/forum/viewtopic.php?f=4&t=26

Mais global, débutant comme je suis je n'arrive pas à :
- lancer la barre de progression juste après la connexion au FTP
- lancer l'upload d'un contenu d'un répertoire pouvant contenir des fichiers avec des tailles importantes
- la barre continu pendant ce temps là à progresser
- et avant ou après la déconnexion du FTP, arrête la barre de progression.

A ce jour, je sais seulement lancer l'une ou l'autre fonction. Mais pas à faire jouer la barre de progression en arrière plan pendant l'upload.

En attendant, je l'espère, une aide. Je continu mes recherches
Encore merci
Cdt

Re: [..] Upload un dossier par FTP + barre progression

Posté : mar. 28 janv. 2014 21:52
par Tlem

Re: [..] Upload un dossier par FTP + barre progression

Posté : mer. 29 janv. 2014 20:02
par phifi
Bonsoir,

Avec mon très petit niveau, je n'ai pas réussi avec vos méthode....
Je suis donc parti sur une autre piste, trouvée sur le forum qui pourrait me convenir, mais il y a un "mais".

La barre de défilement s'arrête de défiler pendant l'upload, et reprend à la fin de l'upload (ou lors de la déconnexion du FTP).

Question : comment faire pour que la barre de défilement continu de défiler pendant l'upload ?

Voici mon nouveau code :
► Afficher le texte

Re: [..] Upload un dossier par FTP + barre progression

Posté : mer. 29 janv. 2014 23:21
par Tlem
Bonsoir. L'exemple de ProgressBar.au3 est pourtant assez simple. :shock:

Récupérez la fonction _TheProGressBar(), initialisez la variable globale $ProgressBarTitle (avec le texte que vous souhaitez voir apparaitre) en début de script et lorsque vous devez afficher la barre de progression vous l'appelez avec la fonction AdlibRegister puis quand vous voulez l'arrêter $ProgressBarTitle a vide. :roll:

Re: [..] Upload un dossier par FTP + barre progression

Posté : jeu. 30 janv. 2014 04:42
par Hackoo
Salut :)
J'ai essayé la Progressbar de Tlem et ça marché pour moi 5/5 juste, il me reste la gestion d'erreurs de la connexion FTP etc...
► Afficher le texteExemple de Code Upload FTP + ProgressBar

Re: [..] Upload un dossier par FTP + barre progression

Posté : jeu. 30 janv. 2014 22:08
par phifi
Bonsoir,

Je confirme, le script fonctionne. Et j'ai fini par comprendre pourquoi je ne voyais pas le défilement de la barre de progression. Lors de l'upload d'un fichier de taille importante, exemple : 1Mega. La barre ne défile plus.
Et vu que mon script, upload dès le lancement de la barre de progression des fichiers de tailles importantes, et que le début du défilement est de la même couleur que le fond de la GUI (noir), je ne voyais rien. Et j'ai interpréter par erreur que cette méthode ne fonctionnait pas... Désolé.

Par contre, existe-il une solution pour que le défilement continu pendant l'upload ?

Merci