Frage

In unserem aktuellen Projekt, das wir bieten einen PDF-Download, der durch den Benutzer über ein HTML-Formular angepasst werden kann er einreicht. Es dauert einige Sekunden, um dynamisch die PDF zu generieren und ich möchte diese sichtbar zu machen, zum Beispiel durch Deaktivieren der Submit-Button, bis der Download beginnt. Leider konnte ich keine Möglichkeit zu erkennen, finden, wenn der Download * beginnt. Also ich würde nicht wissen, wann sie wieder zu aktivieren, die Submit-Button.

Ich habe bereits versucht, einen IFrame als Ziel meines HTML-Formular angeben, in der Hoffnung, dass das onload Ereignis würde ausgelöst werden. Es ist jedoch nicht -. Wahrscheinlich, weil die PDF-Datei mit einem „Content-disposition: attachment“ Header gesendet wird, und es ist nicht wirklich in das IFrame geladen

Die einzige Lösung, die ich jetzt richtig denken kann, geht auf dem Server die PDF in eine temporäre Datei zu erzeugen, die Ich mag würde vermeiden.

*) Lassen Sie mich das klarstellen: Ich würde nicht wissen müssen, wenn der Download beendet wurde oder auch wenn es wurde wirklich begonnen. Ich mag den Punkt erkennen, an dem der Browser die Benutzer fragen, ob zu öffnen oder die Datei zu speichern. Ich denke, das passiert, wenn der Browser den HTTP-Header empfängt.

War es hilfreich?

Lösung

Was Sie wollen, ist in der Lage sein, zu erkennen, wenn die Größe der heruntergeladenen Datei ändert sich von 0 auf einen positiven Wert. Soweit ich weiß, dass es unmöglich ist, mit Javascript zu tun, dass -. Sie eine Plug-in benötigen, dass das Dateisystem des Clients zugreifen

Eine empfohlene Arbeit um: Erstellen Sie eine Sitzung pro Download. Haben Sie den Client-Umfrage den Server über den Status des Downloads. Dies könnte „nicht bestanden“, „nicht gestartet“, „gestartet“, „fertig“. Sie müssen einige Seiten Arbeit des Servers anhalten und den Status des Download sowie ein AJAX-Framework zu aktualisieren.

Andere Tipps

Wenn ich Sie war ich würde mit den Informationen an den Server einen AJAX-Aufruf tun, erzeugen Sie die Datei, dann wieder den Dateinamen / id / was auch immer wieder auf die JavaScript aktivieren, die dann window.location etwas wie download.php macht? id = x (aber die Datei bereits erzeugt wurde, so ist es nur die Header Einstellung und Auslesen) an welcher Stelle Sie können wieder aktivieren, die einreichen.

Die einfachste Lösung wäre es, die Zeit zu schätzen (großzügig) und tut es auf diese Weise. Es ist ein Hack, aber es gibt die gewünschte Wirkung. Die andere Option könnte sein, die Form mit einem Rückruf vorlegen Ajax mit dem Formular einzureichen und den Generator Rückholeinzelheiten an der aufrufende Seite hat. http://www.jquery.com/ könnte ein guter Ort für diese Option zu starten.

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