2008-10-03 19 views
6

Tengo una página web que extrae información de una base de datos, la convierte a formato .csv y escribe el archivo en HTTPResponse.¿Cambiar el nombre del archivo enviado al cliente?

string csv = GetCSV(); 
Response.Clear(); 
Response.ContentType = "text/csv"; 
Response.Write(csv); 

Esto funciona bien, y el archivo se envía al cliente sin problemas. Sin embargo, cuando el archivo se envía al cliente, se utiliza el nombre de la página actual, en lugar de un nombre más amigable (como "data.csv").

alt text

Mi pregunta es, ¿cómo puedo cambiar el nombre del archivo que se escribe en el flujo de salida sin necesidad de escribir el archivo en disco y redirigir el cliente a la URL del archivo?

EDIT: Gracias por las respuestas chicos. Recibí 4 de la misma respuesta, así que elegí la primera como respuesta.

Respuesta

11

Creo que esto funcionará para usted.

Response.AddHeader("content-disposition", "attachment; filename=NewFileName.csv"); 
1

Agregue un encabezado "Content-Disposition" con el valor "attachment; filename = filename.csv".

1
Response.AddHeader("content-disposition", "attachment; filename=File.doc") 
2

Sólo tiene que establecer el Content-Disposition cabecera

Content-Disposition: attachment; filename=data.csv 

En este artículo de soporte de Microsoft tiene una buena información

How To Raise a "File Download" Dialog Box for a Known MIME Type

+0

El ejemplo es válido (no debería haber una semis posterior olon). –

Cuestiones relacionadas