Comment puis-je télécharger le fichier zip en C#?
- Je utiliser HTTP GET qui télécharge un fichier zip dans un navigateur, quelque chose comme https://example.com/up/DBID/a/rRID/eFID/vVID (pas l'adresse url exacte)
Maintenant, quand j'essaie de faire la même télécharger dans le code C# (même méthode GET comme ci-dessus) pour une application de bureau, le fichier zip téléchargé n'est pas valide d'un fichier d'archive. Quand j'ai ouvert ce fichier dans le bloc-notes, c'était une page HTML.
Je pense que je ne suis pas à la définition de certains d'en-tête correctement. J'ai regardé autour pour des exemples. J'avais trouvé plusieurs wrt uploads, mais ne pas voir quoi que ce soit pour les téléchargements.
Code:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/zip";
try
{
HttpWebResponse res = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default))
{
StreamWriter oWriter = new StreamWriter(@"D:\Downloads.zip");
oWriter.Write(sr.ReadToEnd());
oWriter.Close();
}
res.Close();
}
catch (Exception ex)
{
}
OriginalL'auteur Merrin | 2011-01-22
Vous devez vous connecter pour publier un commentaire.
C'est principalement parce que vous utilisez un
StreamWriter : TextWriter
pour gérer un fichier binaire en fichier Zip. Un StreamWriter s'attend à ce texte et appliquer un Codage. Et même le simple ASCII Codeur peut essayer de "réparer" ce qu'il pense ne sont pas valides ligne terminaisons.Vous pouvez remplacer tout le code avec:
+1 me battre - @Al: j'ai testé avec un fichier zip et il fonctionne très bien, êtes-vous sûr que le fichier lui-même n'est pas endommagé, déjà?
Je pense que la question que je me pose est celui de l'authentification pour le service. Et puis, je pourrais sans doute utiliser le client web pour télécharger le fichier.
Oh mon cher dieu, cette réponse m'a sauvé beaucoup de temps. Merci beaucoup à vous et Google qui m'a amené ici.
merci copain. vous avez sauvé ma vie. sa fonctionne très bien 🙂
OriginalL'auteur Henk Holterman
Vous pouvez simplement utiliser
WebClient
pour un 2-liner:Je suis à l'aide d'un
using
de l'instruction regarder de plus prèsremplacé mon downgrade +1, toutes mes excuses!
OriginalL'auteur BrokenGlass