PHP Download excel-Datei beschädigt wird
Ich habe eine excel-Datei, die ich möchten, dass ein Benutzer in der Lage sein, um download von meinem server. Ich sah eine Menge von Fragen hier, aber ich kann nicht einen Weg finden, um richtig laden Sie die Datei w/o-Korruption. Ich gehe davon aus es ist der Header, aber ich hatte noch nicht eine funktionierende Kombination von Ihnen noch. Dies ist, was ich jetzt haben und in der korrupten Datei, die ich erhalten, ich kann sehen, dass die Spaltennamen der Tabelle, den ich will, aber es ist alles Durcheinander.
$filename = '/var/www/web1/web/public/temporary/Spreadsheet.xls';
header("Content-type: application/octet-stream");
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=ExcelFile.xls;");
header("Pragma: no-cache");
header("Expires: 0");
readfile($filename);
edit: Lösung ich vergaß hinzuzufügen, dass ich mit Zend und es war die Beschädigung der Dateien, beim Versuch, verwenden Sie das native php-Methoden. Meine Haushaltsrede war der code für einen link zu einer anderen Aktion in meinem controller und haben die Dateien herunterzuladen, von dort
public function downloadAction(){
$file = '/var/www/web1/web/public/temporary/Spreadsheet.xls';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="Spreadsheet.xls"');
readfile($file);
//disable the view ... and perhaps the layout
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
}
Ausgabe 2 Inhalt Header ist sinnlos - eine Datei kann nicht zwei Dinge auf einmal. es ist wie wenn man sagt "ich bin eine giraffe und ein Wal!".
Durch einen langen, langen Weg die häufigste Antwort(en) auf diese Art von Fragen ist entweder: a) Sie haben eine führende/nachfolgende Leerzeichen/HTML vor/nach der
<?php ?>
Variablen in Ihrem Skript oder ein BOM in der Datei oder b) du hast vergessen zu nennen exit
/die
nach der readfile()
und mehr Inhalt war die Ausgabe am Ende der Datei Daten.Ich meine einen direkt-download.
mir fehlte ein exit auf meine Aussage, das würde aufhören, mich von der Datei alle zusammen, aber die Datei kommt immer noch korrupt.
InformationsquelleAutor rubio | 2012-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen, es zu tun auf diese Weise
ich bin immer Fehlermeldung wie ob_end_flush(): failed to delete and flush buffer. Kein Puffer zu löschen oder flush in file_path.Bitte machen Sie mir, was zu tun @Melvin Protacio
InformationsquelleAutor Melvin Protacio
Zum einen geben Sie nur
Content-Type
einmal. Sie können die excel-spezifische header aber die generischeapplication/octet-stream
werden können, eine sicherere Wette, nur um es zu erhalten arbeitend (der wirkliche Unterschied wird sein, was der browser zeigt dem Benutzer im Hinblick auf "was möchten Sie diese Datei öffnen mit", aber grundlegende Browser können sich auf die Erweiterung)Stellen Sie außerdem sicher, dass Sie angeben
Content-Length
- und dump-Größe (in Byte) der Datei, die Sie ausgeben. Der browser muss wissen, wie groß die Datei ist und wie viel Inhalt Sie erwartet, zu empfangen (so dass es nicht zu stoppen in der Mitte oder ein Schluckauf unterbrechen nicht die Datei herunterladen).So, wird die gesamte Datei sollte bestehen aus:
Um zu bestätigen, wird die Datei (nach dem Download mit einem FTP-client) funktioniert? Es ist nur, wenn Sie versuchen, führen Sie es durch PHP als download, dass es verdirbt?
Ja, ich habe es runtergeladen aber ftp zu prüfen, und es funktioniert gut. Ich bin mit zend auch wenn, das ist ein Problem.
Ich habe das problem gelöst. Es war wegen zend. Aber ich brauchte, um VDN.-msexcel, die du erwähnt hast. Dank
InformationsquelleAutor Brad Christie
Funktionen sind integriert
PHP >= 5.3.0
oh mir ist version problem..Dank dir @Bhavesh Gangani
Nach update der php-version, die ich Hinzugefügt ;extension=fileinfo.also in php.ini.Es funktioniert für mich.
Froh, dass es für Sie gearbeitet.
InformationsquelleAutor Bhavesh Gangani