Download de arquivo zip em C# não funciona corretamente

  • Autor Autor raulsuances
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
R

raulsuances

Beta
Usuário com poucas negociações! Use sempre o saldo do 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.
Inserir CODE, HTML ou 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 edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Bueno no entiendo muy bien lo que pides, si no estoy mal seria así.

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

O en su caso:
Inserir CODE, HTML ou 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 o anexo 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

Inserir CODE, HTML ou 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 edição:
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:
Inserir CODE, HTML ou 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.
Inserir CODE, HTML ou 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.
Inserir CODE, HTML ou 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 edição:
Voltar
Topo