Bonjour,
J'ai avec moi un problème bien particulier, et il y en a qui adore cela !
J'ai une classe qui s'occupe de différent transfert via FTP, pour cela j'utilise la classe WebClient et sa petite méthode géniale nommée UploadFileAsync, qui permet d'uploader un fichier sur un serveur de manière asynchrone. J'utilise 2 callback, 1 pour la progression et l'autre pour la complétion.
Jusque la pas de problème tout marche a merveille.
Maintenant j'essaye d'uploadé un fichier de 3.8Mo : blocage a 50% de l'upload. En feuilletant un peu le msdn de cette classe, je m'appercois que les 50 premier pourcent corresponde a l'upload et les 50 dernier au download qui suit.
J'interroge donc mes variables au fur et a mesure, j'obtient au blocage :
Progress : 50%
Uploaded 3425656/3425656b
Downloaded 0/-1b
Impossible de débloquer...
J'ai aussi trouver le meme problème que moi ici mais sans réponse.
Cette erreur ne survient que pour les fichier d'environ plus de 3Mo.
Pour les fichiers en dessous, au bout de 50%, downloaded devient 0/0.
Si quelqu'un a une réponse, ou meme un moyen de contourner le problème, je suis prenneur.
Voici mon code :
Code C# :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 private void Upload(String cheminSource, String fileName, String cheminDestination) { WebClient wc = new WebClient(); wc.UploadFileCompleted += new UploadFileCompletedEventHandler(Completed); wc.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallBack); wc.Credentials = new NetworkCredential(@_login, @_password); try { wc.UploadFileAsync(new Uri(host + cheminDestination + fileName), cheminSource + fileName); } catch (Exception e) { errs.ErrorCallBack(CODE_ERREUR.ERREUR_CONNEXION_FTP, e, this); } wc.Dispose(); } private void UploadProgressCallBack(object sender, UploadProgressChangedEventArgs e) { Console.WriteLine((string)e.UserState + "\n\n" + "Uploaded " + e.BytesSent + "/" + e.TotalBytesToSend + "b (" + e.ProgressPercentage + "%)"); Console.WriteLine((string)e.UserState + "\n\n" + "Downloaded " + e.BytesReceived + "/" + e.TotalBytesToReceive + "b"); int realProgress = e.ProgressPercentage != 100 ? e.ProgressPercentage * 2 : e.ProgressPercentage; errs.ProgressCallBack(realProgress, listeAttente[0][2]); }
Partager