68 votes

Comment télécharger un fichier depuis un site web en C #

Est-il possible de télécharger un fichier à partir d'un site Web sous forme d'application Windows et de le placer dans un certain répertoire?

121voto

CMS Points 315406

Avec la classe WebClient :

 using System.Net;
//...
WebClient Client = new WebClient ();
Client.DownloadFile("http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png", @"C:\folder\stackoverflowlogo.png");
 

87voto

Jon Skeet Points 692016

Utilisez WebClient.DownloadFile :

 using (WebClient client = new WebClient())
{
    client.DownloadFile("http://csharpindepth.com/About.aspx", 
                        @"c:\Users\Jon\Test\foo.txt");
}
 

13voto

FlySwat Points 61945

Bien sûr, il vous suffit d'utiliser un HttpWebRequest.

Une fois que vous avez la HttpWebRequest mis en place, vous pouvez enregistrer le flux de réponse à un fichier streamwriter (Soit binarystream, ou un textwriter selon le type mime.) et vous avez un fichier sur votre disque dur.

EDIT: Oublié WebClient. Que les bonnes œuvres, à moins que, aussi longtemps que vous avez seulement besoin d'utiliser GET pour récupérer votre fichier. Si le site vous oblige à publier des informations sur elle, vous aurez à utiliser un HttpWebRequest, je repars donc ma réponse jusqu'.

0voto

angelo Points 21

Essayez cet exemple:

 public void TheDownload(string path)
{
  System.IO.FileInfo toDownload = new System.IO.FileInfo(HttpContext.Current.Server.MapPath(path));

  HttpContext.Current.Response.Clear();
  HttpContext.Current.Response.AddHeader("Content-Disposition",
             "attachment; filename=" + toDownload.Name);
  HttpContext.Current.Response.AddHeader("Content-Length",
             toDownload.Length.ToString());
  HttpContext.Current.Response.ContentType = "application/octet-stream";
  HttpContext.Current.Response.WriteFile(patch);
  HttpContext.Current.Response.End();
} 
 

La mise en œuvre se fait de la manière suivante:

 TheDownload("@"c:\Temporal\Test.txt"");
 

Source: http://www.systemdeveloper.info/2014/03/force-downloading-file-from-c.html

0voto

turgay Points 45

Vous pouvez également utiliser la méthode DownloadFileAsync dans la classe WebClient. Il télécharge dans un fichier local la ressource avec l'URI spécifié. De plus, cette méthode ne bloque pas le thread appelant.

Échantillon:

     webClient.DownloadFileAsync(new Uri("http://www.example.com/file/test.jpg"), "test.jpg");
 

Pour plus d'informations:

http://csharpexamples.com/download-files-synchronous-asynchronous-url-c/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X