Descargar un archivo desde una URL en C#
Esta publicación discutirá cómo descargar un archivo desde una URL en C#.
1. Usando WebClient
Class
los System.Net.WebClient
La clase proporciona varios métodos de utilidad para enviar y recibir datos de un recurso URI. Puedes usar el WebClient.DownloadFile() para descargar el recurso con el URI especificado en un archivo local. Se necesitan dos parámetros: address
, que es el URI desde el que descargar datos y el fileName
, que es el nombre del archivo local que va a recibir los datos. El siguiente ejemplo descarga el jquery-3.6.1.min.js
archivo de la https://code.jquery.com/
dominio y guarda el archivo en el disco duro local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; using System.Net; public class Example { public static void Main() { string remoteUri = "https://code.jquery.com/"; // Dominio de destino string fileName = "jquery-3.6.1.min.js"; // nombre de archivo del recurso web string dest = @$"D:\{fileName}"; // Archivo local using (WebClient webClient = new WebClient()) { Console.WriteLine("Downloading file {0}...", fileName); // Descarga el recurso web y guárdalo en el destino webClient.DownloadFile(remoteUri + fileName, dest); Console.WriteLine("Successfully downloaded file {0}", fileName); } } } |
Tenga en cuenta que este método bloquea el hilo de llamada mientras descarga el recurso. Para descargar un recurso de forma asíncrona, considere usar el DownloadFileAsync()
método. También puede utilizar el WebRequest
class para realizar una solicitud a un URI, como se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.IO; using System.Net; public class Example { public static void Main() { String url = "https://code.jquery.com/jquery-3.6.1.min.js"; string dest = @"D:\jquery-3.6.1.min.js"; using (StreamReader reader = new StreamReader(WebRequest.Create(url) .GetResponse().GetResponseStream())) { String content = reader.ReadToEnd(); File.WriteAllText(dest, content); } } } |
Tenga en cuenta que tanto el WebClient
y WebRequest
class están obsoletos y dan como resultado la siguiente advertencia.
advertencia SYSLIB0014: 'WebClient.WebClient()' está obsoleto: 'WebRequest, HttpWebRequest, ServicePoint y WebClient están obsoletos. Utilice HttpClient en su lugar.'
2. Usando HttpClient
Class
Es preferible utilizar el HttpClient
clase de la System.Net.Http
espacio de nombres Puedes usar el HttpClient.GetStringAsync() para devolver de forma asíncrona la respuesta como una cadena del Uri especificado, que luego se puede escribir en el sistema de archivos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.IO; using System.Net.Http; public class Example { public static void Main() { String url = "https://code.jquery.com/jquery-3.6.1.min.js"; string content; using (HttpClient client = new HttpClient()) { content = client.GetStringAsync(url).Result; } string dest = @"D:\jquery-3.6.1.min.js"; File.WriteAllText(dest, content); } } |
Se trata de descargar un archivo desde una URL en C#.