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?
Réponses
Trop de publicités?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");
Utilisez WebClient.DownloadFile
:
using (WebClient client = new WebClient())
{
client.DownloadFile("http://csharpindepth.com/About.aspx",
@"c:\Users\Jon\Test\foo.txt");
}
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'.
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
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/