Téléchargement FTP... 0D 0A

Résolu
Djzlouk Messages postés 70 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 20 janvier 2011 - 4 août 2010 à 00:15
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 :)

2 réponses

Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
4 août 2010 à 08:21
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
3
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,

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.
0
Rejoignez-nous