2010-07-20 10 views
6

Ich habe ein Skript wie diesesPHP: Inhalt nach dem erzwungenen Download anzeigen?

<?php 

if (file_exists("./foo.txt")) { 

    header("Content-type: application/force-download"); 
    header("Content-length: ".filesize("./foo.txt")); 
    header('Content-Disposition: attachment; filename="foo.txt"'); 
    readfile('./foo.txt'); 
} 

print "HEY!"; 

?> 

und ich möchte das "Hey" nach dem erzwungenen Download auf die Seite geschrieben werden, wie ist das möglich?

Ich sehe Download-Seiten, die wie sind "Wenn Ihr Download nicht automatisch startet, klicken Sie hier", so ist es Inhalt und der Download? Die hey in meinem Beispiel ist in der Textdatei enthalten, so dass es nicht funktioniert.

Antwort

3

Dies wäre nur möglich, mit einem multipart message. Aber leider gibt es nicht viele Browser, die mehrteilige Nachrichten in HTTP unterstützen (ich denke, Opera ist die einzige).

Deshalb ist es üblich, die Download-Seite mit einer Meta-Refresh-Weiterleitung zu senden, um sowohl eine Textnachricht als auch eine Download-Aktion zu haben (obwohl es in umgekehrter Reihenfolge ist).

1

Dies ist auf diese Weise nicht möglich. (Mindestens so lange, wie wir keine mehrteiligen Anfragen haben.)

Die Seiten, die Sie erwähnen, umleiten auf die Seite "wenn Ihr Download nicht startet ...." und den Download von dort normalerweise auslösen JavaScript verwenden, um den Download in einem neuen Fenster zu öffnen.

1

Anzeige der Nachricht auf einer anderen Seite .. dann einen Link die Datei oder leiten Sie den Browser auf die PHP-Datei zum Download, die den Download zwingt ..

3

Sie können es mit META REFRESH wie folgt aus:

<meta http-equiv=REFRESH CONTENT="5; url=http://your_domain/your_file"> 
+0

+1 für alte Schule :) –

0
onClick="setTimeout(location.reload.bind(location), 15000);" 

Diese 15 Sekunden (15.000 Millisekunden) warten, rufen Sie dann die location.reload Funktion, die eine eingebaute Funktion auf Lade die Seite neu.

Verwandte Themen