C# Language Télécharger un fichier depuis un serveur Web


Exemple

Télécharger un fichier à partir d'Internet est une tâche très courante requise par presque toutes les applications que vous êtes susceptible de créer.

Pour ce faire, vous pouvez utiliser la classe " System.Net.WebClient ".

L'utilisation la plus simple de ceci, en utilisant le modèle "using", est montrée ci-dessous:

using (var webClient = new WebClient())
{
    webClient.DownloadFile("http://www.server.com/file.txt", "C:\\file.txt");
}

Dans cet exemple, il utilise "using" pour s'assurer que votre client Web est correctement nettoyé une fois terminé, et transfère simplement la ressource nommée depuis l'URL du premier paramètre vers le fichier nommé sur votre disque dur local dans le second. paramètre.

Le premier paramètre est de type " System.Uri ", le second paramètre est de type " System.String "

Vous pouvez également utiliser cette fonction en tant que forme asynchrone, de sorte qu’elle se déclenche et effectue le téléchargement en arrière-plan, tandis que votre application utilise autre chose, l’utilisation de cet appel revêt une importance majeure dans les applications modernes. pour garder votre interface utilisateur réactive.

Lorsque vous utilisez les méthodes Async, vous pouvez connecter des gestionnaires d'événements qui vous permettent de surveiller la progression, de manière à pouvoir, par exemple, mettre à jour une barre de progression, par exemple:

var webClient = new WebClient())
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
webClient.DownloadFileAsync("http://www.server.com/file.txt", "C:\\file.txt");

Un point important à retenir si vous utilisez les versions d'Async cependant, et c'est "Soyez très prudent lorsque vous les utilisez dans un" en utilisant la "syntaxe".

La raison en est assez simple. Une fois que vous appelez la méthode du fichier de téléchargement, elle reviendra immédiatement. Si vous avez ceci dans un bloc using, vous retournerez puis quitterez ce bloc, et disposerez immédiatement de l'objet de classe, et annulerez ainsi votre téléchargement en cours.

Si vous utilisez la méthode "using" pour effectuer un transfert asynchrone, assurez-vous de rester dans le bloc englobant jusqu'à la fin du transfert.