OVH Cloud OVH Cloud

Probleme de reception de la taille avec getchunk

21 réponses
Avatar
john.ambou
Bonjour,

J'essaye d'ajouter une barre de progression =E0 un transfert ftp par
inet mais la propri"t=E9 getchunk me retourne rien.

Savez vous d'ou provient ce probleme ?

Inet1.Execute , "size /" & fic_source 'demande la taille du fichier a
telecharger
Do Until Inet1.StillExecuting =3D False 'boucle pendant le traitement de
inet
DoEvents
Loop

taille =3D Inet1.GetChunk(1024) 'recuperation de la taille dans taille


En sortie, j'ai taille=3D""=20
=20
Merci=20
=20
Johnson

10 réponses

1 2 3
Avatar
john.ambou
Au secours, il y a vraiment rien qui fonctionne j'ai tout essayé
....(enfin tous ce que je sait faire)
Personne a une autre idée ?
Avatar
Vincent Guichard
a écrit :
Au secours, il y a vraiment rien qui fonctionne j'ai tout essayé
....(enfin tous ce que je sait faire)
Personne a une autre idée ?




Alors, on va voir si j'ai bien compris ce que tu veux faire.

Tu transferts des fichiers par FTP sur un serveur, et tu voudrais
afficher une barre de progression suivant l'avancement du téléchargement.

Postulats:
1- Le transfert de fichier (.Execute, "PUT") ne pose pas de problèmes.
2- La lecture de la taille d'un fichier (.Execute, "SIZE") ne pose pas
de problèmes.
3- Le serveur ne place pas les fichiers en cours de téléchargement dans
un tampon (ou un fichier temporaire).
4- Le serveur accepte au moins deux connexions entrantes de la même
provenance (IP)

Alors, pour pouvoir afficher une barre de progression, il te faudra
1- Créer deux contrôles INET1 pour le transfert, INET2 pour le suivit.
2- Utiliser INET1.Execute , "PUT " & Filename pour commencer à
transférer le fichier.
3- Tant que INET1.StillExecuting, utiliser INET2.Execute , "SIZE " &
Filename pour récupérer la taille des données déjà transférées.
4- Ne pas oublier de fermer les connexions INET1 et INET2 après usage.

Vincent Guichard
Avatar
john.ambou
Suite a vos recommandations voici le code source que j'ai développé :


Dim taille As Variant
Dim pourcent As Integer
Dim fic_source, fic_destination As String

fic_source = "c:2.bmp" 'fichier a uploader"
fic_destination = "test" 'fichier de destination"

pb.Min = 0
pb.Max = FileLen(fic_source)
MsgBox FileLen(fic_source)

With Inet1
.Protocol = icFTP 'declaration protocole
.url = "ftp://81.48.100.217" 'le ftp
.UserName = "testing"
.password = "win"
End With

With Inet2
.Protocol = icFTP 'declaration protocole
.url = "ftp://81.48.100.217" 'le ftp
End With

Inet1.Execute , "put " & fic_source & " /" & fic_destination

While Inet1.StillExecuting = False

Inet2.Execute , "size /" & fic_destination
While Inet2.StillExecuting = False
DoEvents
Wend

taille = Inet2.GetChunk(1024)
While Inet2.StillExecuting = False
DoEvents
Wend

pb.Value = taille

Wend

Cela ne fonctionne pas mais je voudrais savoir pls choses :
le second INET je dois les initialiser ave quel parametre au niveau du
password et du login ?
peut on mettre ce de INET1 ou faut'il en créer un autre ou l'ajout de
lURL suffi ?

Sinon j'espere ne peut avoir fais de faute de programmation....

je vous remercie de votre aide

Johnson
Avatar
john.ambou
C'est la derniere version :

Dim taille As Variant
Dim pourcent As Integer
Dim fic_source, fic_destination As String

fic_source = "c:2.bmp" 'fichier a uploader"
fic_destination = "fichier" 'fichier de destination"
pb.Min = 0
pb.Max = FileLen(fic_source)
With Inet1
.protocol = icFTP 'declaration protocole
.URL = "ftp://81.249.XXX.XX" 'le ftp
.username = "*****"
.password = "*****"
End With

Inet1.Execute , "put " & fic_source & " /" & fic_destination 'envoie du
fichier

Inet2.URL = Inet1.URL 'initialise inet2 : mm url
Inet2.username = Inet1.username 'initialise inet2 : mm username
Inet2.password = Inet1.password 'initialise inet2 : mm password
Inet2.protocol = Inet1.protocol 'initialise inet2 : mm protocol

Do Until Inet1.StillExecuting = False 'boucle pendant le traitement de
inet1
On Error Resume Next
If Inet2.StillExecuting = False Then 'si inet2 n'est pas actif

Inet2.Execute , "size /" & fic_destination 'demande la taille
du fichier sur le ftp
Do Until Inet2.StillExecuting = False 'boucle pendant le
demande inet2
DoEvents
Loop

taille = Inet2.GetChunk(1024) 'recuperation du size dans taille
Do Until Inet2.StillExecuting = False 'boucle pendant le
demande inet2
DoEvents
Loop

'affichage de la progressbar

pb.Value = taille 'affichage de l'avancement de pb
pourcent = (pb.Value / pb.Max) * 100 'calcul du pourcentage
reçu
Label1.Caption = pourcent & "%" 'affichage du % du
telechargement

End If
Loop

La barre de progression ainsi que le label de pourcentage ne fonctionne
pas! Enfin ils fonctionnent que a la fin du transfert, jai ma barre de
progressiona fond et 100% pour le label.
Il est coincé dans une boucle pendant le transfert .....

je ne sais pas comment faire ...
Avatar
john.ambou
Je pense avoir inseré l'ensemble de vos recommandation à
l'interieurde celui ci et je vous remercie de votre aide !!

Johnson
Avatar
Vincent Guichard
a écrit :
Je pense avoir inseré l'ensemble de vos recommandation à
l'interieurde celui ci et je vous remercie de votre aide !!

Johnson



Essaie de réduire le ResponseTimeout du contrôle Inet1

Vincent Guichard
Avatar
john.ambou
J'ai réduit 50 40 30 20 10 5 3 1 mais la barre de transfert ne
fonctionne plsu il y a juste le label qui à l'air de fonctionner
lorsque le timout du INET 1 est passé

Merci de votre aide
Avatar
john.ambou
Avez vous d'autres solutions à me proposer ?

Merci
Johnson
Avatar
Vincent Guichard
a écrit :
Avez vous d'autres solutions à me proposer ?

Merci
Johnson



Non, ce doit être un problème inhérent au contrôle INET. A part passer
par un autre contrôle, je ne vois pas comment faire.

Vincent Guichard
Avatar
john.ambou
Les autres controles c a d les API Interconnect ... ??

Merci
1 2 3