Téléchargement FTP... 0D 0A [Résolu]

Messages postés
70
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
20 janvier 2011
- - Dernière réponse : Djzlouk
Messages postés
70
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
20 janvier 2011
- 9 août 2010 à 09:03
Bonjour,

J'ai un serveur FTP qui contient un ZIP.
Je souhaite tout simplement le télécharger sur ma machine et le dézipper.

Pour cela, je fais :
1) La copie sur ma machine
2) Le 'dézippage'

La partie 1 :
                //filePath: The full path where the file is to be created.
                //fileName: Name of the file to be createdNeed not name on
                //          the FTP server. name name()
                FileStream outputStream = new FileStream(adresseDestination + "\" +
                   nomFichier, FileMode.Create);

                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServer + "/" + adresseSource + "/" + nomFichier));
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary = false;
                reqFTP.Credentials = new NetworkCredential(ftpUserID,
                                                           ftpPassword);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();
                long cl = response.ContentLength;
                int bufferSize = 20480;
                int readCount;
                byte[] buffer = new byte[bufferSize];

                readCount = ftpStream.Read(buffer, 0, bufferSize);
                while (readCount > 0)
                {
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }

                ftpStream.Close();
                outputStream.Close();
                response.Close();


Et le dézippage ne marche pas, car le fichier ZIP est corrompu.
Donc, j'ai fait le test en téléchargeant manuellement le fichier... et cela marche tres bien.

C'est donc que le code du téléchargement ne doit pas etre bon...

J'ai regardé tout ca d'un peu peu prêt et comparé le ZIP recu par programme et celui téléchargé manuellement... et la différence se trouve autour des 0D 0A et 0A. Dans le zip qui marche on ne trouve que des 0A, dans celui corrompu, il y a des 0D 0A.

Bref, je ne vois pas ce qui ne marche pas... Ou y a t il a un autre moyen de récupérer un fichier sur un ftp sans rien changer au niveau binaire?

(PS : Le fichier sur le serveur est bien sur bon :p)

Si vous avez une idée, n'hésitez pas :)
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
721
Date d'inscription
dimanche 10 juin 2001
Statut
Membre
Dernière intervention
27 mars 2011
4
3
Merci
Bonjour,

Avez vous essayé de remplacer le
reqFTP.UseBinary = false;
par
reqFTP.UseBinary = true;

Cela indiquera qu'il faut faire un transfert binaire, au lieu d'un transfert texte.

Voir la msdn:
Info MSDN

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Tilois
Messages postés
70
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
20 janvier 2011
0
Merci
Bonjour,

Je n'ai pas eu l'occaz de faire le test avant...
Effectivement ca marche tres bien avec le reqFTP.UseBinary = true;

C'est bizarre, le code à marché pendant 6 mois sans... et maintenant il faut faire ca...

Enfin ca marche c'est le principale.
Commenter la réponse de Djzlouk