Foros del Web » Programando para Internet » ASPX (.net) »

response.writefile + PDFs

Estas en el tema de response.writefile + PDFs en el foro de ASPX (.net) en Foros del Web. Hola! tengo una aplicacion web de la cual mis clientes bajan archivos de varios tipos (doc‚ rtf‚ xls‚ y pdf) con los primeros 3 no ...
  #1 (permalink)  
Antiguo 28/04/2006, 07:36
CiS
 
Fecha de Ingreso: abril-2002
Mensajes: 71
Antigüedad: 22 años
Puntos: 0
response.writefile + PDFs

Hola!
tengo una aplicacion web de la cual mis clientes bajan archivos de varios tipos (doc‚ rtf‚ xls‚ y pdf) con los primeros 3 no tengo problema‚ pero los archivos PDF no los puedo ni abrir ni ejecutar‚ abre correctamente el acrobat‚ pero sale el sigueinte mje de error: “Adobe Reader no pudo abrir 'archivo.pdf' debido a q no es un tipo de archivo admitido o esta dañado…"· Si abro el archivo directamente (desde el explorador)‚ el mismo se ve perfecto‚ o sea no esta dañado ni nada‚ pero desde la aplicacion no· 

Alguien sabe q puede estar pasando?

mi codigo:
Response.Clear()
'esto lo agregue ahora y tampoco anda
If Right(fileName‚ 3) = “pdf” Then
Response.ContentType = “Application/pdf"
End If

Response.AppendHeader("Content–Disposition"‚ “attachment; filename=” & fileName)

Response.WriteFile(fileNameAndPath)
Response.End()

Desde ya muchas gracias!!!!!!!!!!!
CiS
  #2 (permalink)  
Antiguo 28/04/2006, 10:58
 
Fecha de Ingreso: abril-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 0
Hola:

Para forzar que siempre aparezca el diálogo de descarga pon en ContentType un valor desconocido por el navegador ejemp:

Response.Clear()
'esto lo agregue ahora y tampoco anda
If Right(fileName‚ 3) = “pdf” Then
Response.ContentType = “Application/pepegrillo"
End If

Response.AppendHeader("Content–Disposition"‚ “attachment; filename=” & fileName)

Response.WriteFile(fileNameAndPath)
Response.End()
  #3 (permalink)  
Antiguo 28/04/2006, 11:05
CiS
 
Fecha de Ingreso: abril-2002
Mensajes: 71
Antigüedad: 22 años
Puntos: 0
El dialogo lo veo!, en todos los casos aparece. Mi problema es cuando selecciono "abrir", o "descargar" en ese dialogo, ahi no anda.

Acabo de ver que dentro del archivo que estoy queriendo descargar, ademas del texto original me pego todo el codigo de la pagina!!!.

No se por que tiene este comportamiento!



Gracias por la respuesta igual!!!

Alguien sabra como solucionarlo?

CiS
  #4 (permalink)  
Antiguo 28/04/2006, 11:16
 
Fecha de Ingreso: abril-2005
Mensajes: 29
Antigüedad: 19 años
Puntos: 0
Bien, prueba con esto:

...
// Marco el Content-Type como algo desconocido para forzar el diálogo
Response.ContentType = "APPLICATION/pepeelgrillo";
// Le proporciono el Path real del archivo
string FilePath = "\\archivo.pdf";
// Le doy el nombre del archivo y finalmente escribo
Response.AppendHeader( "content-disposition","attachment; filename= & fileName);
Response.WriteFile(FilePath);
Response.End();
  #5 (permalink)  
Antiguo 02/05/2006, 09:06
CiS
 
Fecha de Ingreso: abril-2002
Mensajes: 71
Antigüedad: 22 años
Puntos: 0
Muchas gracias por tu ayuda!!!! pero ya lo pude solucionar!

la solucion final la encontre aqui

http://www.microsoft.com/spanish/msd...ces/art134.asp

tuve q cambiar algunas cositas porque el ejemplo estaba mal, pero anduvo!!!!

Mil mil gracias!!!!

Hasta la proxima
CiS
  #6 (permalink)  
Antiguo 02/05/2006, 12:11
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Sería bueno que en la primera oportunidad nos compartieras la forma completa que hiciste para pesolverlo para que tengamos la referencia para casos futuros..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 05/05/2006, 07:24
CiS
 
Fecha de Ingreso: abril-2002
Mensajes: 71
Antigüedad: 22 años
Puntos: 0
Ok! les recuerdo que el codigo original lo consegui en el link q les conte anteriormente. Yo modifique algunas cositas y quedo lo siguiente:

-----------------------------------
Dim fs As FileStream = New FileStream(Server.MapPath(fileName), FileMode.Open, FileAccess.Read)
Dim fileData As Byte()
ReDim fileData(fs.Length)
Dim bytesRead As Long = fs.Read(fileData, 0, CInt(fs.Length))
fs.Close()
Dim sFileExt As String = Split(fileName, ".")(1)

'Se borran las cabeceras actuales de HTTP
Response.ClearContent()
Response.ClearHeaders()

'Se establecen las cabeceras correspondientes
'Nombre del archivo para que el usuario no vea download.aspx en el cuadro de descarga
Response.AddHeader("Content-Disposition", "attachment;filename=" & fileName)

'Tipo MIME del archivo a descargar. Si tienen diferentes tipos de archivos hacen un case
'Response.ContentType = "application/msword"
Response.ContentType = "application/pdf"

'Cabecera que establece el tamaño de la respuesta (tamaño del archivo en bytes)
Response.AddHeader("Content-length", bytesRead.ToString())

'Se escribe la respuesta al usuario que verá la ventana de descarga del archivo.
Response.BinaryWrite(fileData)

-----------------------------------

Los espacios de nombres:
Imports System.IO
Imports System.IO.FileStream


-----------------------------------------

y listo! yo no agregue la pagina downloadHandler.aspx que sugieren en el link, ni tampoco modifique el config (o sea: primero hice todo lo del link, y como no me andaba fui probando hasta q finalmente anduvo asi como les cuento)

Espero no haberme olvidado nada, cualquier cosita me escriben!

Saludossss
CiS

Última edición por CiS; 05/05/2006 a las 07:32
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:19.