Frage

Ich verwende Symfony2 Framework und verwende den folgenden Code, um eine XML -Datei zu exportieren:

$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');

Ich spielt keine Rolle, ob ich "Content-Transfer-Coding" oder "Pragma" oder alle von ihnen außer "Inhaltstyp" und "Inhaltsdisposition" wegnehme. Das Ergebnis in Chrom ist immer: "Dateiname-, Anhang" (ohne das "). In Firefox funktioniert dies einwandfrei.

Wenn ich beispielsweise eine Datei namens home.xml Firefox habe, wird Home.xml heruntergeladen, während Chrome mir Home.xml-, Anhang gibt.

War es hilfreich?

Lösung

Ich weiß, dass dies eine ziemlich alte Diskussion ist, aber wenn jemand hierher kommt, um Hilfe zu suchen, stellte ich fest, dass Chrome am Ende des Dateinamens ein Semikolon will, und dann ist es glücklich. Wie in (vbscript):

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

Das hat es für mich behoben. -Dave

Andere Tipps

Ich hatte das gleiche Problem in Zend, weil ich viele nicht funktionierende Sachen gefunden habe, die ich zu diesem Beitrag hinzufügen wollte. Da ich eine Weile gebraucht habe, um zu lösen, dachte es, dass mehr Benutzer und Entwickler wissen wollten, wie ich es gelöst habe. Ich füge das kurz vor meinem fopen -Anruf hinzu.

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

Löste das Problem für mich. Bevor ich einen Kontext verwendete, war es fehlerhaft, aber jetzt funktioniert es als Zauber. Vergessen Sie nicht, frühere Header für die Disposition von Inhalten zu entfernen. Sie können daher einen Doppel -Header -Fehler erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top