Pregunta

Utilizo Symfony2 Framework y uso el siguiente código para exportar un archivo 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');

No importa si tomo "codificación de transferencia de contenido" o "pragma" o todos, excepto "tipo de contenido" y "disposición de contenido". El resultado en Chrome es siempre: "nombre de archivo-, apego" (sin el "). En Firefox esto funciona bien.

Entonces, por ejemplo, si tengo un archivo llamado home.xml, Firefox descargará home.xml, mientras que Chrome me dará home.xml-, adjunto.

¿Fue útil?

Solución

Sé que esta es una discusión bastante antigua, pero si alguien llega aquí buscando ayuda con esto, decidí que Chrome parece querer un punto y coma al final del nombre de archivo y luego es feliz. Como en (VBScript):

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

Eso lo arregló para mí. -Sciente

Otros consejos

Tuve el mismo problema en Zend porque encontré muchas cosas que no funcionan, quería agregar mi Anwser a esta publicación. Dado que me tomó un tiempo resolverlo pensó que más usuarios y desarrolladores querían saber cómo lo resolví. Agrego esto justo antes de mi llamada Fopen.

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

Resolvió el problema para mí. Antes de usar un contexto transmitido lo que era buggy, pero ahora funciona como un encanto. No olvide eliminar los encabezados de disposición de contenido anteriores, por lo tanto, puede obtener un error de encabezado doble.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top