c# - una - Especificación de nombre de archivo para PDF dinámico en asp.net
response.redirect javascript (5)
Response.AddHeader("Content-Disposition", "attachment;filename=" & FileName & ";")
¿Cómo puedo especificar el nombre del archivo cuando descargo datos en la secuencia de respuesta?
En este momento 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 del archivo para guardar. Me parece recordar que puedo agregar un encabezado a la respuesta para especificar el nombre del archivo para guardar.
Response.AppendHeader("Content-Disposition", "attachment; filename=foo.pdf");
Agregue una disposición de contenido al encabezado:
Response.AddHeader("content-disposition", @"attachment;filename=""MyFile.pdf""");
FYI ... si usa "en línea" en lugar de "archivo adjunto", 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));
Por alguna razón, la mayoría de las respuestas no parecen siquiera intentar codificar el valor del nombre del archivo. Si el archivo contiene espacios, punto y coma o comillas, es posible que no se encuentre correctamente.
Parece que puede usar la clase ContentDisposition
para generar un valor de encabezado correcto:
Response.AppendHeader("Content-Disposition", new ContentDisposition
{
FileName = yourFilename
}.ToString());
Puede verificar el código fuente de ContentDisposition.ToString()
para confirmar que intenta codificarlo correctamente.
Advertencia : parece que se cuelga cuando el nombre del archivo contiene un guión (no un guión). No me he molestado en investigar esto todavía.