[c#] Crear pdf en el carpeta temporal del Cliente

1,154 views
Skip to first unread message

Don_Pipo Torres M.

unread,
Sep 23, 2008, 10:57:10 AM9/23/08
to Dario Quintana
Estimados,
 
me he fijado que muchas aplicaciones "ASP.NET" crean archivos temporales en el cliente, ejm rpt o pdf.
 
alguno de ustedes me podria ayudar con este tema.
 
para ser mas especifico me gustaria crear pdf en la carpeta "%tmp%" del cliente.
--
Saludos

Oscar Torres M.

Hernán Zaldívar

unread,
Sep 23, 2008, 11:41:47 AM9/23/08
to Dario Quintana

En realidad cuando “abris” un archivo desde la web siempre te lo baja a una carpeta temporal

 


Don_Pipo Torres M.

unread,
Sep 23, 2008, 11:55:00 AM9/23/08
to Dario Quintana
Hernan,
 
pero en el servido crea el mismo temporal?
 
es posible que no cree nada en el servidor y siempre en el cliente?

2008/9/23 Hernán Zaldívar <hzal...@fyo.com>

Hernán Zaldívar

unread,
Sep 23, 2008, 12:00:47 PM9/23/08
to Dario Quintana

Claro, en el servidor no se crea nada….en realidad lo que se hace es lo siguiente (es nuestro caso)

1)       Response.Clear();

2)       Response.ContentType = ContentType;

3)       Response.OutputStream.Write(FileData, 0, FileSize);

4)       Response.End();

 

Siendo ContentType el tipo de contenido (en el caso de PDF application/pdf), FileData el contenido del PDF y FileSize el tamaño del archivo

Don_Pipo Torres M.

unread,
Sep 23, 2008, 12:57:23 PM9/23/08
to Dario Quintana
Es muy parecedo la forma de crear el pdf, solo que tengo unas lineas de codigo para crear el archivo en una carpeta esta la obtenego
 

ruta_exportacion =

Path.GetTempPath();//aca obtengo %tmp% del server

ExportOptions

exportOpts = new ExportOptions();

DiskFileDestinationOptions
diskOpts = new DiskFileDestinationOptions();

string tmpFilePath = ruta_exportacion + pagina.Session.SessionID.ToString() + ".pdf";

diskOpts.DiskFileName = tmpFilePath;

exportOpts.DestinationOptions = diskOpts;



2008/9/23 Hernán Zaldívar <hzal...@fyo.com>

Martín Salías

unread,
Sep 24, 2008, 6:26:23 PM9/24/08
to Dario Quintana
Oscar, si generás el archivo físicamente (en lugar de generar la stream derecho), podés hacer que el cliente lo baje, y después borrarlo en algún momento.
 
Donde vaya a parar en el cliente no podés controlarlo vos. Si lo abre sin bajarlo va a parar por default al Temp folder que le toque en Windows. Si lo baja, lo baja a donde él quiera. Esto es así y no hay manera porque desde el servidor no podés controlar el File System del cliente. Sería un agujero de seguridad.
 
Saludos,
---
Martín Salías
http://Salias.com.ar



2008/9/23 Don_Pipo Torres M. <osto...@gmail.com>

Pedro Wood

unread,
Sep 25, 2008, 9:32:01 AM9/25/08
to Dario Quintana
Hola Oscar,
incluso creándolo en memoria con poner el "Content-Disposition" en
"attachment" ya le aparece el mensaje de abrir o guardar al cliente (no
hace falta crearlo en el fs del servidor).

A las líneas de código que mandé Hernán le agregás:

Response.AddHeader("Content-Disposition", "attachment;
filename=ejemplo.cvs");

Saludos,

Pedro

Martín Salías escribió:


> Oscar, si generás el archivo físicamente (en lugar de generar la
> stream derecho), podés hacer que el cliente lo baje, y después
> borrarlo en algún momento.
>
> Donde vaya a parar en el cliente no podés controlarlo vos. Si lo abre
> sin bajarlo va a parar por default al Temp folder que le toque en
> Windows. Si lo baja, lo baja a donde él quiera. Esto es así y no hay
> manera porque desde el servidor no podés controlar el File System del
> cliente. Sería un agujero de seguridad.
>
> Saludos,
> ---
> Martín Salías
> http://Salias.com.ar
>
>
>
> 2008/9/23 Don_Pipo Torres M. <osto...@gmail.com

> <mailto:osto...@gmail.com>>


>
> Es muy parecedo la forma de crear el pdf, solo que tengo unas
> lineas de codigo para crear el archivo en una carpeta esta la
> obtenego
>
>
> ruta_exportacion =
>
> Path.GetTempPath();//aca obtengo %tmp% del server
>
> ExportOptions
>
> exportOpts = new ExportOptions(); DiskFileDestinationOptions
> diskOpts = new DiskFileDestinationOptions();
> string tmpFilePath = ruta_exportacion +
> pagina.Session.SessionID.ToString() + ".pdf";
>
> diskOpts.DiskFileName = tmpFilePath;
>
> exportOpts.DestinationOptions = diskOpts;
>
>
>
> 2008/9/23 Hernán Zaldívar <hzal...@fyo.com

> <mailto:hzal...@fyo.com>>


>
> Claro, en el servidor no se crea nada….en realidad lo que se
> hace es lo siguiente (es nuestro caso)
>
> 1) Response.Clear();
>
> 2) Response.ContentType = ContentType;
>
> 3) Response.OutputStream.Write(FileData, 0, FileSize);
>
> 4) Response.End();
>
>
>
> Siendo ContentType el tipo de contenido (en el caso de PDF
> application/pdf), FileData el contenido del PDF y FileSize el
> tamaño del archivo
>

> ------------------------------------------------------------------------
>
>
>
> *De:* c#@mug.org.ar <http://mug.org.ar/> [mailto:c
> <mailto:c>#@mug.org.ar <http://mug.org.ar/>] *En nombre de
> *Don_Pipo Torres M.
> *Enviado el:* Martes, 23 de Septiembre de 2008 12:55 p.m.
>
> *Para:* Hernán Zaldívar
> *Asunto:* [c#] Crear pdf en el carpeta temporal del Cliente


>
>
>
> Hernan,
>
>
>
> pero en el servido crea el mismo temporal?
>
>
>
> es posible que no cree nada en el servidor y siempre en el
> cliente?
>
> 2008/9/23 Hernán Zaldívar <hzal...@fyo.com

> <mailto:hzal...@fyo.com>>


>
> En realidad cuando "abris" un archivo desde la web siempre te
> lo baja a una carpeta temporal
>
>
>

> ------------------------------------------------------------------------
>
> *De:* c#@mug.org.ar <http://mug.org.ar/> [mailto:c
> <mailto:c>#@mug.org.ar <http://mug.org.ar/>] *En nombre de
> *Don_Pipo Torres M.
> *Enviado el:* Martes, 23 de Septiembre de 2008 11:57 a.m.
> *Para:* Hernán Zaldívar
> *Asunto:* [c#] Crear pdf en el carpeta temporal del Cliente


>
>
>
> Estimados,
>
>
>
> me he fijado que muchas aplicaciones "ASP.NET

> <http://asp.net/>" crean archivos temporales en el cliente,

Don_Pipo Torres M.

unread,
Sep 25, 2008, 10:47:27 AM9/25/08
to Dario Quintana
Gracias estimados, voy a ver como me va con un ejemplo y les aviso. xD
Reply all
Reply to author
Forward
0 new messages