PHP-Datei Download mit POST-Daten über jQuery AJAX

8

Also ich weiß, es gab eine Reihe von ähnliche Posts, aber ich denke, das ist genug einer Variation, um seine eigene Frage zu rechtfertigen:

Ich baue einen XLS-Exporteur in PHP und jQuery. Ich versuche, ein Array mit jQuery (die ich glaube zu lange als GET-Querystring zu sein), POST, und verwenden Sie es, um eine XLS-Datei auf meinem Server zu generieren, die der Benutzer dann herunterladen kann.

Ich habe in der Vergangenheit versteckte iframes verwendet, um dies zu erreichen, aber da sie nur auf eine URL umleiten, muss ich GET verwenden, was mich nervös macht.

Meine Frage lautet dann: Wie speichere ich diese Dateien auf meinem Server und verknüpfe sie mit ihnen, wenn sie dynamisch generiert werden, möglicherweise von mehreren Benutzern? Wäre ein versteckter Iframe-Link zu einem separaten PHP-Skript, das ihre Datei basierend auf einer Sitzungs-ID oder ähnlichem findet?

Vielen Dank im Voraus für jede Anleitung hier auf was ich bin sicher gefragt wird die ganze Zeit:)

    
Trafalmadorian 31.08.2010, 21:55
quelle

2 Antworten

9

Es ist möglich, an einen versteckten Iframe zu senden. Daher müssen Sie sich keine Gedanken über die Länge der Abfragezeichenfolge machen. Sie werden die Schlüssel / Wert-Paare veröffentlichen, die Ihre XLS-Datei generieren und anschließend den Download der Datei zum Browser zwingen.

%Vor%

UPDATE Eine schnelle Google-Suche ergab diesen Artikel: Ссылка

Grundsätzlich ist der Vorschlag, das Formular an die aktuelle Seite zu senden und mit einem Dateidownload zu antworten. Diese Alternative könnte gut genug für Sie sein.

    
simeonwillbanks 31.08.2010, 22:07
quelle
5

Es scheint, als sollte es ziemlich einfach sein, aber alles hängt davon ab, wo Sie die XLS-Dateien anlegen, die Sie erzeugen. Wenn Sie beabsichtigen, dass die Antwort auf den Post ein "Save File" -Dialog sein soll - also die Datei selbst - dann müssen Sie nur den Header "Content-Disposition" sicherstellen ist auf "attachment" eingestellt und streamt dann den Dateiinhalt aus.

Wenn Sie die Datei generieren und sie behalten wollen, müssen Sie sie irgendwo mit einem Identifikator speichern. In diesem Fall würden Sie einfach mit einer gewöhnlichen Seite antworten, die einen "Download" -Link hat, so dass dieser Link die Dateikennung enthält. Das kann entweder einen GET oder einen POST auslösen, und der Server würde auf das antworten, so wie ich es oben beschrieben habe.

Ein versteckter <iframe> kommt meiner Meinung nach nicht wirklich dazu.

    
Pointy 31.08.2010 22:01
quelle

Tags und Links