template

Index :: Javascript :: Popup: Download-Dialog

Siehe auch PHP/MySQL -> Downloadstream erzeugen (ohne temoräre Datei)

Normalerweise liegen Daten (Skripte, Bilder, Dokumente) als statische und direkt downloadbare Dateien auf dem Webserver. Es gibt jedoch Fälle, in denen das nicht so ist:
Damit der Benutzer auf die Daten zugreifen kann, muss eine (temporäre) Datei im Webserverpfad erzeugt und zum Herunterladen angeboten werden. Üblicherweise soll die Datei nach dem Download dann wieder gelöscht werden.

Die hierzu benötigen Schritte werden am besten in einem separaten Dialog gekapselt: Das aufrufende Skript öffnet ein Popup und übergibt dabei evtl. relevante Parameter. Der PHP-Code im Popup liest die Parameter aus und erzeugt eine entsprechende Datei (z.B. durch Kopieren, Generieren oder Konvertieren). Im HTML-Code wird ein normaler Link auf die Datei angezeigt.
Um zu erfahren, wann die Datei wieder gelöscht werden kann, zeigen wir ausserdem einen eigenen Schließen-Button (oder -Link) an, welcher bewirkt, dass sich das Popup-Skript erneut - evtl. mit entsprechendem Parameter - aufruft. Bei diesem zweiten Aufruf wird die Datei seitens PHP gelöscht und das Popupfenster anschließend mittels Javascript geschlossen.

Beispiel für einen Download-Dialog:
Php Einleitung
if (strlen($tmp = $_GET['tmp'])) { //---- aufräumen @unlink("downloadordner/". $tmp); // temporäre Datei löschen } else { //---- Download vorbereiten // ... evtl. Benutzerauthentifizierung ... // ... evtl. GET-Parameter auslesen ... // ... evtl. Datenbankzugriff ... $tmpfile = ... // hier: temporären Namen erzeugen $fp = fopen("downloadordner/". $tmpfile, "w"); // Datei öffnen (binär: "wb") // ... Daten schreiben: fputs($fp, ...) oder binär fwrite($fp, ...) ... fclose($fp); // Datei schließen }
Im Header, im Javacript-Bereich:
<?php if (strlen($tmp)) { ?>window.close;<?php } ?>
Weiter unten, im BODY:
<a href='downloadordner/<?php echo $tmpfile; ?>'>Ihre Datei</a><br> <br> <a href='javascript:self.location.href="<?php echo basename($_SERVER['PHP_SELF']); ?>?tmp=<?php echo $tmpfile; ?>"'>Schlie&szlig;en</a>
Falls es sich um sicherheitskritische oder private Daten handelt, sollte im Popup eine Benutzeridentifizierung vorgenommen werden, um einen Missbrauch der GET-Parameter zu verhindern.

Index :: Javascript


template