Das obige sollte funktionieren – bitte beachten Sie den Unterschied in der Content-Disposition-Header.
Übrigens… Wenn Sie eine Download-Box erzwingen wollen (anstatt das Dokument im Browser zu laden), sollten Sie die verwenden Content-Dispositionattachment.
Je nach Browser kann es möglich sein, dass Sie auch die einstellen müssen Content-Length oder ändern Sie die Content-type zu einer Kombination (mehrere Header) von einem oder mehreren von application/force-download, application/octet-stream und/oder application/download. Und wie ich im Kommentar geschrieben habe, kann es vorkommen, dass Caching-Header Ihren Download stören. Überprüfen Sie, welche Caching-Header gesendet werden.
Ihr Beispiel funktioniert nicht SR, ich erhalte die Downloadbox nicht mehr. Hier ist mein Code: pastebin.com/d6be142ab
– Ufo
25. August 2009 um 6:26 Uhr
Welcher Browser? Und können Sie überprüfen, welche Header tatsächlich über die Leitung gesendet werden? Insbesondere einige Caching-Header können das Herunterladen von Dateien stören.
– Stefan Gehrig
25. August 2009 um 7:08 Uhr
@Uffo: Wenn Sie einen Download erzwingen möchten, sollten Sie dies in Ihrer Frage angeben. Sie haben nur gefragt, wie die Header richtig gesetzt werden, und die ursprüngliche Antwort von S. Gehrig war genau diese.
– Rytmis
25. August 2009 um 9:09 Uhr
David Snabel-Caunt
Spät an den Tisch, kann ich empfehlen dieser Aktionshelfer als einfache, wiederverwendbare Komponente zum Senden von Dateien oder im Speicher befindlichen Daten an den Browser.
Hat Optionen für Caching, Disposition und kann Apache Sendfile verwenden
Die Antwort hier wird niemals gerendert (wodurch die Header gerendert werden). Die Antwort wird normalerweise während des Druckens nach der Aktion gerendert.
Sie müssen die Header direkt setzen (wie Sie im Nicht-oo-Code notiert haben) oder verwenden $this->getResponse()->sendHeaders() direkt.
Ich hatte ein Header-Set. Es wurde nicht gesetzt, sondern HINZUGEFÜGT. Also hatte ich einen Content-Type von text/html und auch application/pdf.
Das Flag des Content-Type mit TRUE ermöglichte den Download in IOS und anderen Geräten, die nach dem Download nur kryptische Symbole oder einen Fehler anzeigten:
Schauen Sie sich die Antwort von S. Gehrig an, es ist die richtige. Ihre kann funktionieren, aber nur nebenbei. “:inline” ist kein Teil des Namens des Headers.
– Rytmis
25. August 2009 um 6:14 Uhr
Schauen Sie sich die Antwort von S. Gehrig an, es ist die richtige. Ihre kann funktionieren, aber nur nebenbei. “:inline” ist kein Teil des Namens des Headers.
– Rytmis
25. August 2009 um 6:14 Uhr
11758400cookie-checkZend Framework wie man Header setztyes
Der richtige Mime-Type für PDF ist application/pdf.
– Benutzer520634
25. November 2010 um 20:56 Uhr