2008-10-03 9 views
6

J'ai une page Web qui extrait des informations d'une base de données, les convertit au format .csv et écrit le fichier dans la réponse HTTP.Modifier le nom du fichier envoyé au client?

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

Cela fonctionne très bien, et le fichier est envoyé au client sans problème. Cependant, lorsque le fichier est envoyé au client, le nom de la page en cours est utilisé, au lieu d'un nom plus convivial (comme "data.csv").

alt text

Ma question est, comment puis-je changer le nom du fichier qui est écrit dans le flux de sortie sans écrire le fichier sur le disque et rediriger le client vers l'URL du fichier?

EDIT: Merci pour les réponses les gars. J'ai eu 4 de la même réponse, donc j'ai juste choisi le premier comme réponse.

Répondre

11

Je crois que cela fonctionnera pour vous.

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

Ajouter un en-tête "Content-Disposition" avec la valeur "attachement; filename = nomfichier.csv".

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

Vous avez juste besoin de régler le Content-Disposition tête

Content-Disposition: attachment; filename=data.csv 

Cet article de support Microsoft a quelques bonnes informations

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

+0

L'exemple est invalide (il ne devrait pas y avoir de semi-finale olon). –