Question

J'utilise Symfony2 Framework et j'utilise le code suivant pour exporter un fichier XML:

$response->setStatusCode(200);
$response->headers->set('Content-Type', 'application/xml');
$response->headers->set('Content-Description', 'Submissions Export');
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename .'"');
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Pragma', 'no-cache');
$response->headers->set('Expires', '0');

Peu importe que je prenne le "contenu-transfert" ou "pragma" ou tous sauf "de type contenu" et "contenu-disposition". Le résultat en Chrome est toujours: "FileName-, attachement" (sans le "). Dans Firefox, cela fonctionne bien.

Ainsi, par exemple, si j'ai un fichier appelé home.xml firefox télécharger home.xml, tandis que Chrome me donnera home.xml-, pièce jointe.

Était-ce utile?

La solution

Je sais que c'est une discussion assez ancienne, mais si quelqu'un arrive ici à la recherche d'aide, j'ai déterminé que Chrome semble vouloir un point-virgule à la fin du nom de fichier et ensuite c'est heureux. Comme dans (vbscript):

Response.AddHeader "Content-Disposition", "attachment;filename=Something.xls;"

Cela l'a corrigé pour moi. -Dave

Autres conseils

J'ai eu le même problème à Zend parce que j'ai trouvé beaucoup de choses sans travail que je voulais ajouter mon anwser à ce post. Puisqu'il m'a fallu un certain temps pour le résoudre pensait que plus d'utilisateurs et de développeurs voulaient savoir comment je l'ai résolu. J'ajoute cela juste avant mon appel fopen.

header('Content-Disposition: attachment; filename='.time().'.csv');

J'ai résolu le problème pour moi. Avant d'utiliser un contexte, j'ai été buggy mais maintenant cela fonctionne comme un charme. N'oubliez pas de supprimer les en-têtes de disposition de contenu précédents, donc vous pouvez obtenir une erreur à double tête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top