CLR: .Net / Mono / Boo / Otros CLR > ASP .NET

 Problema Al Hacer Download De Archivo

(1/1)

Pucho:
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:
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 --- Public Function Zip(ByVal str As String) As Boolean        Dim filenames As String = ruta_principal & str        Dim s As ZipOutputStream = New ZipOutputStream(File.Create(ruta_principal & str.Substring(0, str.LastIndexOf(&#34;.&#34;)) & &#34;.zip&#34;))        s.SetLevel(5)        Dim fs As FileStream        fs = File.OpenRead(filenames)        Dim buffer() As Byte = BitConverter.GetBytes(fs.Length)        Dim largo As Integer = CInt(fs.Length)         Dim entry As ZipEntry = New ZipEntry(str)        s.PutNextEntry(entry)        While largo &#62; 0            Dim numRead As Int64 = fs.Read(buffer, 0, buffer.Length)            s.Write(buffer, 0, numRead)            largo -= numRead        End While        s.Finish()        s.Close()        fs.Close()        s = Nothing    End Function  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:
Hola Pucho!

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


--- Código: Text ---Response.AddHeader(&#34;Content-Disposition&#34;,                    &#34;attachment; filename=tuarchivo.xls&#34;); 
Para mayores detalles visitar: Forzar la descarga de archivos en nuestros Sitios Web

Saludos,

Pucho:
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:

--- Citar ---tengo en un directorio de mi aplicación un archivo excel
--- Fin de la cita ---

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,

Navegación

[0] Índice de Mensajes

Ir a la versión completa