Domanda

Uso Symfony2 Framework e utilizzo il seguente codice per esportare un file 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');

Non importa se prendo "codifica per trasferimento di contenuti" o "pragma" o tutti loro tranne "tipo contenuto" e "disposizione di contenuti". Il risultato in Chrome è sempre: "FileName-, Allegato" (senza "). In Firefox funziona bene.

Quindi, ad esempio, se ho un file chiamato home.xml Firefox scaricherà home.xml, mentre Chrome mi darà Home.xml-, allegato.

È stato utile?

Soluzione

So che questa è una discussione piuttosto vecchia, ma se qualcuno arriva qui in cerca di aiuto in questo, ho stabilito che Chrome sembra voler un punto e virgola alla fine del nome file e poi è felice. Come in (vbScript):

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

Questo lo ha risolto per me. -Dave

Altri suggerimenti

Ho avuto lo stesso problema in Zend perché ho trovato molte cose non funzionanti che volevo aggiungere il mio Anwser a questo post. Dato che mi ci è voluto un po 'di tempo per risolverlo pensava che più utenti e sviluppatori avrebbero voluto sapere come l'ho risolto. Lo aggiungo poco prima della mia chiamata Fopen.

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

Ho risolto il problema per me. Prima di usare un contesto di ciò che era buggy ma ora funziona come un fascino. Non dimenticare di rimuovere le intestazioni di disposizione dei contenuti precedenti, quindi potresti ottenere un errore a doppia intestazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top