none
Problema con Descargar mas de un archivo ASP C# FW 4.5 RRS feed

  • Pregunta

  • Buenos dias, buenas tardes y buenas noches.

    ASP.NET
    C#
    FW 4.5

    tengo un problema.

    un determinado proceso que tengo creado, genero dos archivos, un archivo TXT y un archivo ZIP que contiene unas imagenes.

    el cliente desea que cuando el proceso de creación de estos dos archivos se culmine los mismo puedan ser descargados al mismo tiempo y NO DESCARGAR UN ZIP QUE CONTENGA TODO, o sea, que los dos arechivos se descarguen al mismo tiempo.

    tengo este codigo:


        protected void BtnDownload_Click(object sender, EventArgs e)
        {
            try
            {
                Response.ClearContent();
                Response.ClearHeaders();

                Response.AddHeader("Content-Disposition", "attachment; filename=" + NombreArchivo);
                Response.ContentType = "application/octet-stream";
                Response.WriteFile(RutaArchivo);
                Response.Flush();
                Response.Close();
                HttpContext.Current.ApplicationInstance.CompleteRequest();

                Response.ClearContent();
                Response.ClearHeaders();

                Response.AddHeader("Content-Disposition", "attachment; filename=" + NombreArchivoZip);
                Response.ContentType = "application/octet-stream";
                Response.WriteFile(RutaArchivoZip);
                Response.Flush();
                Response.Close();
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            catch (Exception er)
            {
                throw er;
            }
        }

    El problema es que me genera error a ejecutar por segunda vez la linea Response.ClearHeaders(); "El servidor no puede eliminar encabezados después de enviar los encabezados HTTP" 


    ¿Que puedo hacer? y que manera hay para mejorar el proceso?


    Gracias

    martes, 12 de julio de 2016 12:20

Respuestas

  • La respuesta es sencilla: no se puede hacer lo que pretendes.

    No se puede hacer por la propia naturaleza del protocolo HTTP. A una petición desde el cliente únicamente puedes enviar una respuesta.

    Tendrás que buscar una alternativa.

    Para elegir la mejor opción habría que conocer más detalles.

    Una opción puede ser la de meter ambos archivos en un zip, como comentas.

    Otra podría ser que, una vez que el proceso haya finalizado en el servidor, se muestren en la página dos links para descargar cada fichero.

    Otra opción, que al finalizar el proceso se muestre en la página el contenido del archivo de texto con un link para la descarga del otro archivo.

    O lanzar dos peticiones en dos frames ocultos, una para cada fichero.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta jesusgomes martes, 12 de julio de 2016 13:44
    martes, 12 de julio de 2016 13:31

Todas las respuestas

  • hola

    >>que los dos arechivos se descarguen al mismo tiempo

    me temo que eso no se puede lograr, el Response es uno solo

    el cliente realiza el Request y el server el Response, pero por cada request solo hay un unico response, si quieres enviar dos seran dos request diferentes al servidor

    es por eso que si quieres enviar dos archivos en el mismo response debes hacerlo uniendo estos en un zip

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 12 de julio de 2016 13:25
  • La respuesta es sencilla: no se puede hacer lo que pretendes.

    No se puede hacer por la propia naturaleza del protocolo HTTP. A una petición desde el cliente únicamente puedes enviar una respuesta.

    Tendrás que buscar una alternativa.

    Para elegir la mejor opción habría que conocer más detalles.

    Una opción puede ser la de meter ambos archivos en un zip, como comentas.

    Otra podría ser que, una vez que el proceso haya finalizado en el servidor, se muestren en la página dos links para descargar cada fichero.

    Otra opción, que al finalizar el proceso se muestre en la página el contenido del archivo de texto con un link para la descarga del otro archivo.

    O lanzar dos peticiones en dos frames ocultos, una para cada fichero.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta jesusgomes martes, 12 de julio de 2016 13:44
    martes, 12 de julio de 2016 13:31
  • muchas gracias, buscare otra alternativa.

    Gracias

    martes, 12 de julio de 2016 13:44