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

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

Votre réponse

2 réponses

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

Merci Tilois 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de Tilois
Djzlouk 70 Messages postés jeudi 26 juillet 2007Date d'inscription 20 janvier 2011 Dernière intervention - 9 août 2010 à 09:03
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.