Speichern einer PhpSpreadSheet durch button-Klick
Ich versuche, mein Laravel-app laden Sie eine excel-Datei mit phpSpreadSheet eine Fortsetzung von PhpExcel. Aber bisher bin ich nicht mit viel Glück mit. Zuerst habe ich versucht zu machen, eine Axios-Aufruf durch ein onClick-aber das funktionierte nicht, da JS nicht erlaubt ist zu speichern Dinge. Danach habe ich versucht, befestigen Sie die Taste, um eine Laravel-Aktion nur geöffnet, eine leere Seite.
Ich weiß nicht, ob jemand hier in der Lage mir zu helfen, aber ich bleibe hoffnungsvoll
Was meinst du mit JS ist nicht erlaubt zu speichern Dinge?
Ich schaute online, und irgendwo sah ich, dass JS nicht speichern konnte-Dinge auf Ihrem computer, aufgrund von Sicherheits-resasons
Sie sind auf der Suche es falsch, mit axios müssen Sie Auslöser den download nicht ausführen, speichern
Aber das scheint nicht möglich zu sein, mit diesem Paket. Ich habe zu verwenden eine Axios-Aufruf zum Aufbau der Datei und verwenden Sie dann eine save-Funktion in php zu speichern, sondern es sollte aber nachfragen, oder zumindest speichern Sie es lokal, aber bisher hatte ich kein Erfolg bekommen.
Ich schaute online, und irgendwo sah ich, dass JS nicht speichern konnte-Dinge auf Ihrem computer, aufgrund von Sicherheits-resasons
Sie sind auf der Suche es falsch, mit axios müssen Sie Auslöser den download nicht ausführen, speichern
Aber das scheint nicht möglich zu sein, mit diesem Paket. Ich habe zu verwenden eine Axios-Aufruf zum Aufbau der Datei und verwenden Sie dann eine save-Funktion in php zu speichern, sondern es sollte aber nachfragen, oder zumindest speichern Sie es lokal, aber bisher hatte ich kein Erfolg bekommen.
InformationsquelleAutor Ferdi van der Woerd | 2017-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst müssen Sie, um einen Endpunkt setzen Ihre Routen zu nennen, die mit ajax (axios in deinem Fall):
In Ihrem controller:
In Fall, dass Sie nicht haben, die Datei können Sie speichern Sie es auf php://output:
Nun müssen Sie nur rufen Sie den Endpunkt
/spreadsheet/download
um den download zu starten, aber eine normale<a href="/spreadsheet/download">Download</a>
funktionieren würde.Hoffe, dies hilft Ihnen.
Wenn die Datei nicht bereits vorhanden, Sie müssen nur eine Ressource, die direkt auf die response-Methode, anstatt es aus der gespeicherten Datei.
Damit würde in etwa so Aussehen? public function download () { if (! empty($pathToTheFile)) { $fileContents = Speicher::disk('local')->get($pathToTheFile); $response = Response::make($fileContents, 200); $response->header('Content-Type', - Speicher::disk('local')- >mimeType($Pfad)); return $response; } else { $fileContents = $writer->save('Product-Report.xlsx'); $response = Response::make($fileContents, 200); $response->header('Content-Type', - Speicher::disk('local')- >mimeType($Pfad)); return $response; } }
Dieses Beispiel würde dann verwendet werden, wenn Sie bereits die Datei auf dem server gespeichert.
der Fehler ist in dieser Zeile header('Content-Disposition: attachment; filename="file.xls"'); fügen Sie ein "x" zu Ende file.xls um es header('Content-Disposition: attachment; filename="file.xlsx"')
InformationsquelleAutor Asur