• Sábado 4 de Mayo de 2024, 11:49

Autor Tema:  Problema Al Hacer Download De Archivo  (Leído 1690 veces)

Pucho

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Problema Al Hacer Download De Archivo
« en: Jueves 1 de Marzo de 2007, 19:05 »
0
El tema es asi: tengo en un directorio de mi aplicación un archivo excel que se genera con datos del usuario. Cuando el usuario hace click en un link deseo qu ele aparezca la ventana para hacer el download del archivo. Mi problema es que como se trata de un archivo excel lo que me está haciendo en este momento es abrirme una nueva ventana de navegador y mostrarme el archivo ahi. El link está con un Href, asi: this.litLink.Text = "<a href='" + directorio + "' target=_blank>Click aqui para bajar el listado</a>";

que forma puedo usar para hacer que se abra la ventana con la opcion de download?

Gracias de antemano

xcx

  • Miembro MUY activo
  • ***
  • Mensajes: 175
  • Nacionalidad: cl
    • Ver Perfil
    • Fotos y captura
Re: Problema Al Hacer Download De Archivo
« Respuesta #1 en: Lunes 12 de Marzo de 2007, 14:52 »
0
Hola, lo que podrías hacer, sería, ya que estás generando el archivo en excel, sería comprimirlo en zip con alguna librería (te recomiendo la ICSharpCode.SharpZipLib.dll, buscalo en google), hacer la referencia correspondiente y por alguna parte de tu código:
Código: Text
  1.  
  2. Public Function Zip(ByVal str As String) As Boolean
  3.         Dim filenames As String = ruta_principal & str
  4.         Dim s As ZipOutputStream = New ZipOutputStream(File.Create(ruta_principal & str.Substring(0, str.LastIndexOf(&#34;.&#34;)) & &#34;.zip&#34;))
  5.         s.SetLevel(5)
  6.         Dim fs As FileStream
  7.         fs = File.OpenRead(filenames)
  8.         Dim buffer() As Byte = BitConverter.GetBytes(fs.Length)
  9.         Dim largo As Integer = CInt(fs.Length)
  10.  
  11.         Dim entry As ZipEntry = New ZipEntry(str)
  12.         s.PutNextEntry(entry)
  13.         While largo &#62; 0
  14.             Dim numRead As Int64 = fs.Read(buffer, 0, buffer.Length)
  15.             s.Write(buffer, 0, numRead)
  16.             largo -= numRead
  17.         End While
  18.         s.Finish()
  19.         s.Close()
  20.         fs.Close()
  21.         s = Nothing
  22.     End Function
  23.  
  24.  
Algo similar a eso, entonces, con esto lograrás comprimir el archivo generado dentro de un archivo zip, el cual, el usuario al intentar descargarlo, le aparecerá la ventana de descargar o abrir con alguna aplicación. Recuerda eliminar el xls generado una vez comprimido para que ahorres espacio...  Espero que te sirva.. :hola:

sergiotarrillo

  • Moderador
  • ******
  • Mensajes: 1059
    • Ver Perfil
    • http://sergiot2.com/blog
Re: Problema Al Hacer Download De Archivo
« Respuesta #2 en: Viernes 16 de Marzo de 2007, 22:09 »
0
Hola Pucho!

Para forzar una descarga tienes que agregar el header Content-Disposition, al objeto Response. Que en codigo seria asi:

Código: Text
  1. Response.AddHeader(&#34;Content-Disposition&#34;,
  2.                     &#34;attachment; filename=tuarchivo.xls&#34;);
  3.  

Para mayores detalles visitar: Forzar la descarga de archivos en nuestros Sitios Web

Saludos,


Sergio Tarrillo
Blog]miBlog[/url]

No me visiten!

Pucho

  • Miembro activo
  • **
  • Mensajes: 57
    • Ver Perfil
Re: Problema Al Hacer Download De Archivo
« Respuesta #3 en: Jueves 29 de Marzo de 2007, 17:55 »
0
Hola Sergio de nuevo, estuve leyendo lo que escribiste en tu página y me es de gran ayuda. Pero para lo que necesito no me sirve porque no tengo permisos de escritura en el servidor. Entonces, la idea sería generar el archivo en memoria ( no se como hacerlo ) y luego forzar su descarga, sin grabarlo físicamente. Como podría hacer eso?

Gracias de antemano

Pucho

sergiotarrillo

  • Moderador
  • ******
  • Mensajes: 1059
    • Ver Perfil
    • http://sergiot2.com/blog
Re: Problema Al Hacer Download De Archivo
« Respuesta #4 en: Domingo 1 de Abril de 2007, 18:30 »
0
Citar
tengo en un directorio de mi aplicación un archivo excel

Este... puedes explicar un poco más de la funcionalidad que estas haciendo para ayudarte mejor...

el archivo esta en el server... pero no quieres descargar este si no otro ... :  :blink:

Saludos,


Sergio Tarrillo
Blog]miBlog[/url]

No me visiten!