J'ai besoin d'envoyer un fichier CSV en réponse HTTP. Comment puis-je définir la réponse de sortie au format CSV?
Cela ne fonctionne pas:
Response.ContentType = "application/CSV";
L'utilisation text/csv
est le type le plus approprié.
Vous devriez également envisager d'ajouter un en- Content-Disposition
tête à la réponse. Souvent, un texte / csv sera chargé par Internet Explorer directement dans une instance hébergée d'Excel. Cela peut ou non être un résultat souhaitable.
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
Ce qui précède fera apparaître une boîte de dialogue "Enregistrer sous" qui peut être celle que vous souhaitez.
Le type MIME du CSV est text / csv selon RFC 4180 .
la source
Utiliser
text/csv
comme type de contenu.la source
Au fil des ans, j'ai perfectionné un ensemble parfait d'en-têtes pour cela, qui fonctionne parfaitement avec tous les navigateurs que je connais.
la source
Essayez l'un de ces autres types MIME (à partir d'ici: http://filext.com/file-extension/CSV )
En outre, le type mime peut être sensible à la casse ...
la source
Utilisez simplement comme ça
la source
return new EmptyResult()
pour obtenir le nom de fichier à coller. Sinon, IE essaiera d'enregistrer le fichier sousActionName.htm
.Dans ASP.net MVC, vous pouvez utiliser a
FileContentResult
et laFile
méthode:la source
J'ai trouvé que le problème avec IE est qu'il renifle les données de retour et décide lui-même du type de contenu qu'il pense avoir été envoyé. Il y a un certain nombre d'effets secondaires que cela provoque, comme toujours ouvrir une boîte de dialogue saveAs pour les fichiers texte car vous utilisez la compression des transferts de données. La solution est (en code php) ......
la source
La définition du type de contenu et de la disposition du contenu comme décrit ci-dessus produit des résultats très différents avec différents navigateurs:
IE8: boîte de dialogue Enregistrer sous comme vous le souhaitez et Excel comme application par défaut. 100% bon.
Firefox: la boîte de dialogue Enregistrer sous apparaît, mais Firefox n'a aucune idée qu'il s'agit d'une feuille de calcul. Suggère de l'ouvrir avec Visual Studio! 50% bon
Chrome: les indices sont totalement ignorés. Les données CSV sont affichées dans le navigateur. 0% bon.
Bien sûr, dans tous ces cas, je fais référence aux navigateurs lorsqu'ils sortent de leur boîte, sans personnalisation des mappages mime / application.
la source
Je suggère d'insérer un caractère «/» devant «monfichier.cvs»
J'espère que vous obtenez de meilleurs résultats.
la source
Pour C # MVC 4.5, vous devez faire comme ceci:
la source