2009-07-20 8 views
2

Les en-têtes suivants fonctionnent sur IE mais pas sur FFComment nommer un fichier à télécharger sur Firefox?

<%@ Page Language="C#" ContentType="text/csv" Inherits="System.Web.Mvc.ViewPage"%> 
<% Response.AddHeader("Content-Disposition", "filename=report.csv;attachment"); %> 

Dans FF le nom proposé dans FF apparaît comme « rapport » sans l'extension.

Répondre

3

Je suis actuellement en utilisant le code qui ressemble à ceci:

response.AddHeader("Content-Disposition", "attachment; filename=\"data.csv\""); 

Dans mon travail quotidien - et cela fonctionne très bien. Etes-vous sûr que ce n'est pas votre système d'exploitation ou tout ce qui a l'option "Masquer les extensions pour les types de fichiers connus" activée? (Je sais que Windows ont cette option et il me rend fou)

+0

Pourquoi les gens ont voté seulement le membre le plus âgé? –

+0

Peut-être parce qu'il a lié la documentation –

+0

Peut-être, idk ... Je * pense * la solution est d'utiliser les citations (être échappé) mais honnêtement je ne sais pas - J'ai posté ce que je savais que cela a fonctionné pour moi, j'ai pas de lien vers la documentation ou quoi que ce soit car c'est le code que j'ai créé il y a des mois et des mois et que je n'ai jamais utilisé depuis. – kastermester

0

try "attachment; filename=\"report.csv\"" (à savoir avec le nom de fichier cité)

4

filename est juste un paramètre de Content-Dispostion. Donc, vous devez échanger les deux:

<% Response.AddHeader("Content-Disposition", "attachment;filename=report.csv"); %> 
2

Récemment je faisais face à ce problème aussi, finalement obtenu la solution

Pour faire fonctionner correctement dans Firefox, assurez-vous entre guillemets de nom de fichier sont placés correctement et sans espace dans le nom du fichier

donc here est l'exemple échantillon pour faire test de base

Cela fonctionne:

Response.ClearContent(); 
Response.ContentType = "text/csv"; 
Response.AddHeader("Content-Disposition", "attachment;filename="+ "MyOrders"+ "_Date_" 
+DateTime.Now.ToString("d")+".csv"); 

Cela permettra également de travailler:

string myfilename = "MyOrders" + "_Date_" + DateTime.Now.ToString("d") + ".csv"; 
Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", 
myfilename)); 

//here you can check using the break point,weather you are using any extra quotes in filename 

Cela ne fonctionnera pas dans Firefox

Response.AddHeader("Content-Disposition", "attachment;filename="+ "MyOrders"+ "_Date_" 
+DateTime.Now+".csv"); 

// because in DateTime.Now there is spaces in Time, Seconds , so firefox downloads file not 
//as csv but downloads it as File , may be a binary file or unknown file type 

Références utilisées this, this, this et this

Merci à tous ceux dont les postes ont aidé d'une manière ou d'une autre.

Espérons que cela puisse aider quelqu'un.

Questions connexes