none
Descargar completo un archivo txt RRS feed

  • Pregunta

  • Mi problema es simple tengo almacenado en mi servidor un archivo txt que se ve de la siguiente manera

    11/06/2019 02:04

    este es un mensje
    -------------------

    Bueno quiero descargar ese archivo en mi maquina usando c# y uso este codigo

    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment; filename="archivo.txt");
    Response.AddHeader("Content-Length", ("archivotxt").Length.ToString());
    Response.ContentType = "text/plain";
    
    Response.WriteFile(Server.MapPath(@"Observaciones/" + ("archivo.txt")));
    Response.End();

    pero al presionar el boton y descargar el txt solo muestra este pedazo

    11/06/2019 0

    o sea no entiendo porque no descarga completo el archivo, alguna sugerencia? Gracias

    martes, 11 de junio de 2019 5:28

Todas las respuestas

  • Problema: En la cabecara HTTP estás reportando que la longitud del archivo es 11 bytes. Por lo tanto, el cliente solo descarga 11 bytes.

    En otras palabras, esto:

    ("archivotxt").Length.ToString());

    no devuelve la longitud del contenido del archivo, sino que devuelve la longitud de la cadena de texto "archivotxt", que obviamente es mucho más pequeña que el contenido del archivo.

    Solución: en la cabecera tienes que poner la longitud del archivo, no la longitud del nombre del archivo.

    Hay varias formas de obtener la longitud del fichero. Una de ellas es usar FileInfo (en System.IO) y leer la propiedad Length:

    FileInfo fi = new FileInfo(Server.MapPath(@"Observaciones/archivo.txt"));

    Response.AddHeader("Content-Length", fi.Length.ToString());

    martes, 11 de junio de 2019 8:55
    Moderador
  • hola

    Entiendo estas desarollando una aplicacion web con asp.net no ? y esa descarga quieres realizarla navgando una pagina, imagino en un link

    planteo esto porque no has mencionado nada del contexto, solo mencionas un servidor, un archivo que quieres descargar

    Que pasa si usas el Response.TransmitFile() como se explica aqui

    How to download a file in ASP.Net

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Carlos_Ruiz_M martes, 11 de junio de 2019 15:01
    martes, 11 de junio de 2019 12:45