Especificar nombre de archivo para PDF dinámico en asp.net
¿Cómo puedo especificar el nombre del archivo al descargar datos en el flujo de respuesta?
Ahora mismo estoy haciendo lo siguiente:
byte[] data= GetFoo();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.BinaryWrite(data);
Response.End();
Con el código anterior, obtengo "foo.aspx.pdf " como el nombre de archivo a guardar. Me parece recordar ser capaz de añadir un encabezado a la respuesta para especificar el nombre de archivo a guardar.
5 answers
Agregue una disposición de contenido al encabezado:
Response.AddHeader("content-disposition", @"attachment;filename=""MyFile.pdf""");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-07 01:24:05
FYI... si utiliza " inline "en lugar de" attachment " el archivo se abrirá automáticamente en IE. En lugar de preguntar al usuario con un diálogo Abrir/Guardar.
Response.AppendHeader("content-disposition", string.Format("inline;FileName=\"{0}\"", fileName));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-15 21:21:47
Response.AppendHeader("Content-Disposition", "attachment; filename=foo.pdf");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-16 16:10:04
Por alguna razón, la mayoría de las respuestas que hay no parecen siquiera intentar codificar el valor del nombre del archivo. Si el archivo contiene espacios, punto y coma o comillas, puede que no aparezca correctamente.
Parece que puede utilizar el ContentDisposition
clase para generar un valor de encabezado correcto:
Response.AppendHeader("Content-Disposition", new ContentDisposition
{
FileName = yourFilename
}.ToString());
Usted puede comprobar hacia fuera el código fuente para ContentDisposition.ToString()
para confirmar que está tratando de codificarlo correctamente.
Advertencia : Esto parece bloquearse cuando el nombre del archivo contiene un guión (no un guion). No me he molestado en investigar esto todavía.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-14 03:42:05
Response.AddHeader("Content-Disposition", "attachment;filename=" & FileName & ";")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-16 16:11:32