write una pestaña pasar parametros paginas pagina otra nueva net navegar entre asp _blank c# asp.net response

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.