descargar y guardar un archivo en .net c#
WebClient, es una clase en .NET del package System.Net, permite enviar o recibir datos de recursos indentificados por una URL (ejemplo, un enlace FTP ). El siguiente ejemplo permite descargar y guardar un archivo en .NET C#
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace ExampleDownloadFile { class Program { static void Main(string[] args) { try { WebClient webClient = new WebClient(); webClient.DownloadFile("http://example.org/data.zip", @"c:/data.zip"); } catch( Exception ex) { System.Console.WriteLine( "Problem: " + ex.Message ); } } } }
Toda la ciencia la realiza la el método DownloadFile, que permite descargar y guardar el archivo en forma sincrona.
amigo tengo un problema y es que quiero que lo que se descargue aparesca en una carpeta por ejemplo en la carpeta de mis documentos o en el escritorio
Hola Erickson
Si, a través del objeto global Environment, podemos obtener la ruta del directorio “Mis Documentos”. Te dejo el código modifcado que es capaz de crear una nueva carpeta dentro de “Mis Documentos”.
Hola, tengo el siguiente problema y aún no se solucionarlo.
Deseo realizar la descarga de un directorio completo (dentro abría archivos pdf, doc y zip).
¿Es posible como descarga directa del directorio sin identificar el nombre de los archivos dentro de ese directorio?
Saludos.
Este método sirve para descargar un formato de una DB en SQL… su función es para WPF,ASP y FROM
private void Button_Click(object sender, RoutedEventArgs e)
{
// is the line of code Of template 2XH
using (SqlConnection cn = new SqlConnection(@”Data Source=DESKTOP-N1GRH28; Initial Catalog= Etiquetas_Soriana; Trusted_Connection=Yes”))
{
string sPathToSaveFileTo = @”C:\Users\Allware\Documents\xml_prueba_soriana\2xh.xml”;
string contenttype = String.Empty;
cn.Open();
SqlCommand cmd = new SqlCommand(“sp_GetXmlTipoHoja”, cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(“@Id”, valor);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
// read in using GetValue and cast to byte array
byte[] fileData = (byte[])dr.GetValue(0);
// write bytes to disk as file
using (System.IO.FileStream fs = new System.IO.FileStream(sPathToSaveFileTo, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite))
{
// use a binary writer to write the bytes to disk
using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs))
{
bw.Write(fileData);
bw.Close();
}
}
}
}
}
Muy buen aporte Zuko !! Gracias por compartir.
Hola, deerme:
Utilicé tu código en el evento click de un boton, pero al presionarlo en el cliente el archivo se descarga en el servidor.
si le doy la ruta con el hostname del cliente me dice “permiso denegado” ¿cómo puedo hacer para descargarlo en el cliente o pasarle las credenciales del administrador al servidor
Hola Sergio
Desconozco el contexto en que estás trabajando (si es escritorio o una aplicación web), según mi perspectiva, creo que lo ideal sería hacer un buffer de la descargar del archivo, entonces, el servidor descarga una parte y lo libera al cliente. Sin embargo, está solución requiere de mucho más código.
Lo más sencillo, sería que el servidor descargue el archivo y luego tu cliente lo baja desde el servidor, y la otra opción (que también es válida según si es que quieres que tu cliente conozca la url real) es simplemente que el cliente baje directamente desde la url (lo re-direccionas).
Saludos