Descarga de archivo zip en C# no funciona correctamente

  • Autor Autor raulsuances
  • Fecha de inicio Fecha de inicio
R

raulsuances

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
[CERRADO]
Buenas, estoy intentando descargar un zip desde mi aplicación y no lo consigo.
He probado muchas cosas, os dejo las prueba que he hecho.
Insertar CODE, HTML o PHP:
var path = @"C:\Users\rpechero\Desktop\Nuevo.zip";
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "Nuevo.zip");
Response.ContentType = "application/x-zip-compressed";
Response.WriteFile(path);
Response.Flush();
Response.End();
Ese es el código que tengo ahora, pero he probado cosas como las siguientes:
- Cambiar el Response.WriteFile por Response.TransmitFile
- Poner la linea: Response.AddHeader("content-length", path.Length.ToString());
- Cambiar el Response-ContentType a: applicacion/x-zip, application/octet-stream, application/x-zip-compressed
- Cambiar el Response.AppendHeader por Response.AddHeader
- Añadir Response.ClearContent
Y mas cosas, pero ninguna me ha funcionado
Lo que necesito es que al darle a un botón descargar, entre en este código y me lo descargue el navegador, tal que así:
Captura.webp
 
Última edición:
Bueno no entiendo muy bien lo que pides, si no estoy mal seria así.

Insertar CODE, HTML o PHP:
Process.Start("http://www.my_url.com/archivo.zip");

O en su caso:
Insertar CODE, HTML o PHP:
Process.Start("chrome.exe", "http:\\www.YourUrl.com");

Con esto se abrirá el navegador por defecto como chorme y se procederá la descarga, ya en el caso de descargarlo vía petición, puedes usar webclient:

downloadfile - How to download a file from a URL in C#? - Stack Overflow

VB Helper: HowTo: Download a file from the web and save it with an arbitrary local file name in Visual Basic .NET

O explícate mejor bro.
 
Gracias por tu respuesta [MENTION=21382]Andres128[/MENTION] 🙂
Vamos a ver si me puedo explicar un poco mejor.

Mi pagina tiene este botón
boton.webp

Cuando pulso en el necesito que se realice la descarga de un archivo .zip que tengo en una ruta en mi servidor.

El ejemplo de código que pongo en el post es para probar si puedo descargar un archivo que tengo en el escritorio.

No se si se dice descargar o enviar, pero la cuestion es que quiero que quien le de al boton, le descargue el .zip.

Estoy programando en C# por cierto.
Espero haberme explicado un poco mejor :ambivalence:

Un saludo
 
Gracias por tu respuesta [MENTION=21382]Andres128[/MENTION] 🙂
Vamos a ver si me puedo explicar un poco mejor.

Mi pagina tiene este botón
Ver el archivo adjunto 100194

Cuando pulso en el necesito que se realice la descarga de un archivo .zip que tengo en una ruta en mi servidor.

El ejemplo de código que pongo en el post es para probar si puedo descargar un archivo que tengo en el escritorio.

No se si se dice descargar o enviar, pero la cuestion es que quiero que quien le de al boton, le descargue el .zip.

Estoy programando en C# por cierto.
Espero haberme explicado un poco mejor :ambivalence:

Un saludo

Insertar CODE, HTML o PHP:
if (File.Exists(Server.MapPath(path + '/' + nombreArchivo)))
                {

                    Response.Clear();
                    Response.AddHeader("content-disposition", "attachment;filename=" + nombreArchivo);
                    Response.WriteFile(Server.MapPath(path + '/' + nombreArchivo));
                    Response.End();
                }
                else
                {
                    mensaje.Text = "Archivo no encontrado";
                }

El codigo se lo tenes que poner al boton que queres que realice la accion, tambien asegurate que tengas el archivo en el servidor
 
ya te respondieron, creo que la primera respuesta de [MENTION=21382]Andres128[/MENTION] esta bien hecha.
si ninguna te funciona deberias especificar que error tienes, recuerda darle un evento Click al boton sino no tendra sentido colocar codigos que nunca compilaran :encouragement:
 
Última edición:
Muchas Gracias por tu ayuda [MENTION=20896]freddy[/MENTION] 🙂
Te explico donde tengo ubicadas las cosas.

La aplicación esta en: C:\inetpub\wwwroot\webProcuradoresHttps
web_opt.webp

El zip que quiero descargar esta en: Z:\Envios\AdministrarFacturas\Facturas.zip
factura_opt.webp

He estado probando el Server.MapPath pero no he podido hacerlo.

También he probado esto y tampoco ha funcionado:
Insertar CODE, HTML o PHP:
string directorioAdministrarFacturas = @ConfigurationManager.AppSettings["DirectorioFacturas"];
string filename = "Facturas.zip";
string rutaZip = Path.Combine(directorioAdministrarFacturas, filename);

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.WriteFile(rutaZip);
Response.End();

Donde @ConfigurationManager.AppSettings["DirectorioFacturas"] es Z:\Envios\AdministrarFacturas

Hay algo que no este haciendo? es que no se como hacerlos que funcione.

Un saludo.

- - - Actualizado - - -

Gracias por ayudarme [MENTION=21382]Andres128[/MENTION] :encouragement:

El caso es que tengo algo parecido ya hecho en mi pagina para descargar un .csv, que funciona correctamente, pero quiero hacerlo con un .zip ahora y no consigo que funcione.
Insertar CODE, HTML o PHP:
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "text/csv";
Response.AddHeader("Content-disposition", "attachment; filename=\"Contactos.csv" + "\"");
string file = @ConfigurationManager.AppSettings["rutaPlantillaCsv"];
Response.TransmitFile(file);
Response.Flush();
Response.End();

Donde @ConfigurationManager.AppSettings["rutaPlantillaCsv"] es la ruta donde tengo el .csv, en este caso: "C:\inetpub\wwwroot\webProcuradoresHttps\resources\csv\Contacto.csv"

Voy a probar con la librería DotNetZip esa que me has dejado en el segundo link a ver si tengo suerte.

Un saludo.

- - - Actualizado - - -

Buenas [MENTION=49389]Goomaru[/MENTION] gracias por tu respuesta.
El caso es que cuando hago eso, no me da ningún error pero tampoco me descarga el fichero.
En cuanto al evento Click te digo que si entra en el método porque he estado haciendo pruebas debuggeando.

He posteado mas información en las contestaciones que he hecho a los usuarios [MENTION=21382]Andres128[/MENTION] y [MENTION=20896]freddy[/MENTION] , echalas un ojo a ver si me puedes ayudar.
Un saludo.

- - - Actualizado - - -

Bueno Gracias a todos [MENTION=21382]Andres128[/MENTION] [MENTION=20896]freddy[/MENTION] y [MENTION=49389]Goomaru[/MENTION]
Después de estar toda la mañana dándole vueltas al problema descubrimos que me faltaba una frase en la vista. Por lo que todo lo que me estabais pasando estaba bien.
Insertar CODE, HTML o PHP:
                            Html.X().Button()
                                            .ID("btnDescargar")
                                            .Text("Descargar")
                                            .ToolTip("Descarga todas las facturas")
                                            .Cls("btn-verde")
                                            .DirectEvents
                                            (
                                                de =>
                                                {
                                                    de.Click.Url = Url.Action("DescargarFacturas");
                                                    de.Click.IsUpload = true;
                                                    de.Click.ExtraParams.Add
                                                        (
                                                            Html.X().StoreParameter().Name("jModelo").Mode(ParameterMode.Raw).Value("parametro_busqueda_administrador()")
                                                        );
                                                }
                                            )
                                    )
Me faltaba la frase de : de.Click.IsUpload = true;
Gracias por vuestra ayuda :encouragement:
 
Última edición:
Atrás
Arriba