Comment puis-je obtenir fichier csv à télécharger sur IE? Fonctionne sur firefox
Je suis aux prises avec une étrange erreur. J'ai une simple application web qui attrape des trucs à partir de la base de données puis les sorties, il peut être téléchargé sous forme de fichier csv. Il fonctionne sur firefox et chrome, mais IE ne reconnaît pas en tant que fichier csv (en pensant que c'est un html fle) et quand je clique sur enregistrer, je reçois l'erreur "Impossible de télécharger {nom de fichier} à partir de {nom du site}. Pas pu ouvrir ce site internet. ..."
Code:
session_start();
//some logic goes here...
//generate csv header
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=exportevent.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo "Event: " . $event_title . "\n";
//print the column names
echo "Last Name, First Name, Company \n";
while($row = mysql_fetch_assoc($result))
{
echo $row['atlname'] . ',' . $row['atfname'] . ',' . $row['atcompany'] . "\n";
}
J'ai joué un peu avec le type de contenu de tout un tas, mais qui n'avait aucun effet.
Mise à jour: j'ai essayé de texte/csv, application/vnd.ms-excel (et les variations de la ce), text/plain, et quelques autres que j'ai oublier avec pas de chance.
C'est IE8 btw.
Mise à jour 2: La connexion via SSL.
- quels sont les autres types de contenu que vous essayer? Je l'utilise généralement
text/csv
Vous devez vous connecter pour publier un commentaire.
N'avons-nous pas l'amour c'est à dire? 🙂
Essayez d'utiliser ces en-têtes:
Je pense que l'octet-stream type de contenu forces de l'IE pour télécharger le fichier.
Nous avons récemment rencontré ce problème nous-mêmes. Voir ce MSKB article
Ce sont les en-têtes avons fini par avoir à utiliser pour le faire fonctionner sur SSL.
J'ai eu du succès avec les éléments suivants:
Réglage du type d'application/vnd.ms-excel semblait faire l'affaire dans mon cas. Tout cela dans un fichier qui est ouvert par l'envoi d'un formulaire à l'aide de
Le seul code que j'avais à ajouter pour IE travailler avec le protocole SSL a été:
header("Pragma: public");
Donc, mon les en-têtes de ressembler à ceci maintenant:
Nous avons juste eu le même problème et après l'ajout de nombreux en-têtes et d'obtenir un lien de travail j'ai ensuite retiré un par un et trouvé la clé pour nous est
"Cache-Control: public"
donc en fin de compte nous avons juste eu
qui a bien fonctionné.
Essayez de définir votre type de contenu à
text/csv
au lieu deapplication/octet-stream
.Depuis l'application/octet-stream est un générique binaire de type mime (et ne pas correspondre à la".csv' extension), Internet explorer peut-être l'ignorer et de calcul de type mime, basé sur l'extension de fichier.
La solution pour moi a été:
Avez-vous essayé le Content-type: text/csv ?
Il y a quelques temps j'ai un problème avec IE6 ouverture de fichiers pdf, et de s'écraser lors de l'adobe reader 6.0 a été installé et essayé d'ouvrir le fichier dans la fenêtre du navigateur. Que j'ai trouvé quelque part cet en-tête:
Et il a résolu le problème, chaque fichier pdf a été téléchargé et ouvert dans Adobe au lieu de IE.
Cela ne veut tout simplement pas de bon sens. J'ai essayé la accepté de répondre, toutes les autres réponses ici, et il n'a pas de travail pour moi. J'ai essayé leurs permutations, et d'une certaine manière, j'ai réussi à le faire fonctionner sous IE comme suit:
Une chose que j'ai fait est de vider le cache de chaque flipper fois que je test le code. Et il n'est toujours pas à faire sens. Juste au cas où quelqu'un pourrait avoir besoin de cette énergie du désespoir 😉
Après l'utilisation de Javascript, il permettra de résoudre votre problème.
L'utiliser pour IE,
Pour plus d'information que j'ai écrit tutoriel sur la que les,
voir - Télécharger les données JSON au format CSV de la Croix-prise en charge du Navigateur
Espère que ce sera utile pour vous.
Si vous essayez d'accomplir cette tâche (l'obtention d'un fichier CSV à télécharger IE8) à l'aide de Salesforce.com (dans ce cas, votre front-end est Visualforce et vous ne pouvez pas définir tous les en-têtes, seulement certains d'entre eux), voici ce que vous devez:
Les éléments clés ici sont
cache=true
, qui, en conjonction avec la valeur par défautexpires=0
attribut, réalise les en-têtes suivants:Et puis le
contentType
deapplication/octet-stream
--- fairetext/csv
échoue pour IE8.