Problème de transfert de gros fichiers via FTP en C#

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 21 mai 2008 à 14:53
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 24 mai 2008 à 12:19
Bonjour.


J'utilise actuellement un programme en C# pour transférer un fichier
sur un serveur via FTP. Cependant, la taille de mon fichier augmente
perpétuellement, et résultat, le transfert prend desormais plus de 100 secondes.
Or au bout de 100 secondes, le serveur coupe la connexion. Comment
faire pour la garder active pendant tout ce laps de temps ?

                FtpWebRequest ftpR = (FtpWebRequest)WebRequest.Create(info.Serveur + info.Fichier);
                ftpR.Credentials = new NetworkCredential(info.NomUser, info.PassUser);
                ftpR.Method = WebRequestMethods.Ftp.UploadFile;
                ftpR.Proxy = null;

                Stream s = ftpR.GetRequestStream();
                FileStream fs = new FileStream(info.LocalFile, System.IO.FileMode.Open);
                byte[] temp = new byte[fs.Length];
                //On remplit ce tableau avec les données du fichier
                fs.Read(temp, 0, (int)fs.Length);
                //On écrit ces données dans le flux du FTPWebRequest
                s.Write(temp, 0, (int)fs.Length);
                //On libère les ressources utilisées par les flux
                fs.Close();
                s.Close();

Merci d'avance !

1 réponse

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
24 mai 2008 à 12:19
Salut,

Les clients FTP envoient en général des commandes sur le canal de commande pour empêcher de tomber en idle, mais dans le même temps les serveurs ont en général des détections de ce genre de chose. C'est sans fin.
Dans ton cas la meilleure solution est probablement de prendre en compte ces coupures et de faire l'envoi en plusieurs fois, si le serveur distant supporte la commande REST.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous