2009-10-02 9 views
12

Ich habe ein Web-Formular, das Benutzer online ausfüllen. Wenn sie auf "Senden" klicken, wird ein Dateidownload für sie gestartet.Auto-Start-Datei-Download nach Formular-Übermittlung

Momentan bearbeite ich die Formularübergabe und erstelle eine passende Datei für den Benutzer und feuere sie mit passenden Kopfzeilen ab. z. B. ...

Da dies jedoch sofort einen Download startet, wird das ursprüngliche Formular vom Browser auf dem Bildschirm angezeigt.

Ich würde wirklich gerne zu einem "Danke" -Bildschirm gehen, sobald der Download abgeschlossen ist (oder bevor der Download beginnt). Ich weiß, dass es möglich ist, weil fast jede Download-Site, die Sie besuchen, dies tut (normalerweise, um Sie mit den Anzeigen voll zu pumpen, bevor der Download beginnt).

Also, wie zeige ich einen "Danke" Bildschirm, der den Download nach einer Sekunde startet?

Wie würde eine vorgeschlagene Lösung das Verhalten der Zurück-Schaltfläche beeinflussen, da ich nicht möchte, dass die Datei erneut heruntergeladen wird, ohne dass das Formular neu gefüllt wird?

Ich benutze PHP auf dem Server und kann sich darauf verlassen, dass Javascript (und jQuery) auf dem Client verfügbar sind.

Vielen Dank.

Antwort

23

Sie könnten senden Sie das Formular an die Danke Dokument ein und setzen ein META zur Datei-Download aktualisieren:

<meta http-equiv="refresh" content="3;url=download.php"> 
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p> 
+0

nur eine Anmerkung - löst nicht in firefox – Andrej

+1

@Andrej Haben Sie 'Meta' in' Kopf' und 'p' in' Körper' gesetzt? – Gumbo

3

eine zweite Seite hinzufügen, die etwas sagt „Danke, Ihr Donwnload wird Start in ein paar Sekunden "und löst den Download mit javascript:

$(document).ready(function(){ 
    window.setTimeout(function(){ 
    window.location = 'http://yourdownloadhost.com/file.zip'; 
    }, 1500); 
}); 

oder verwenden Sie eine Meta-Umleitung.

+0

Warum Javascript verwenden, wenn eine Meta-Weiterleitung auch funktioniert? –

+0

Nun, wie Sie aus meinem Kommentar zu Gumbo Post sehen können, bevorzuge ich META Redirect. Allerdings wurde ich von der OP "auf Javascript (und jQuery) verlassen". Allerdings machen einige Templating-Systeme es schwierig, Zeug in die zu injizieren. Also manchmal JS könnte eine Option sein. – middus

+0

Sollen auch im Header sein. AFAIK Javascript im Körper sind illegal. –

0

Sie können einen versteckten iframe in Ihre Seite einfügen und Ihr Formular an diesen iframe senden.