# Bei Link generell immer "Ziel Speichern unter..." ausführen möglich ?



## FRitter (23. Januar 2005)

(Thema war zuvor in HTML-Bereich: http://www.tutorials.de/tutorials188749.html)

Hallo alle zusammen,

wie im Titel dieses Beitrags schon ersichtlich, muss ich es irgendwie schaffen, dass ich auf PDF/Zip-Dateien verlinke und der User mit einem einfachen Klick (links) auf einen Button/eine Grafik die Zieldatei herunterlädt - und diese nicht wie bei PDF sofort im Browser öffnet oder er selbst wählen muss "Ziel speichern unter...".

Dabei muss alles natürlich UNabhängig von den jeweiligen Client-Einstellungen sein (Plugin's zulassen / verweigern z.B: im IE).

Geht so etwas ? Was meint ihr ?


----------



## FRitter (23. Januar 2005)

*Nachtrag: Bei Link generell immer "Ziel Speichern unter..." ausführen möglich ?*

Nicht dass ihr mich falsch versteht - der Client-Browser soll keinesfalls irgendwie im Hintergrund etwas herunterladen und dem User etwas "vorgaukeln"...der Browser soll nur dazu gebracht werden, den Link nicht anzuzeigen/zu öffnen, sondern den Download-Hinweis anzuzeigen. Dann kann der User natürlich immer noch auswählen, ob der Download gestartet werden soll oder auch nicht. Es soll dem User der Rechtsklick erspart werden, da er z.B. PDF-Dateien über einen Button namens "Download" anklickt - dann erwartet der User auch, dass die PDF-Datei heruntergeladen wird... ok?


----------



## Timbonet (23. Januar 2005)

Das kannst du mittels header() und den entsprechenden HTTP-Anweisungen in PHP lösen.


----------



## FRitter (23. Januar 2005)

Hallo und danke vor allem für den letzten Tipp!

Ich habe es mit folgendem Code gelöst (fast):


```
<?php

header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=Rechnung_" . $name . "_" . $date . ".pdf");
readfile('$filepath');

echo "<script type=\"text/javascript\">window.self.close();</script>";

?>
```

Dabei habe ich noch das wohl kleine Problem, dass ich diese PHP-Datei mittels neuem Fenster (JavaScript) aufrufe und das Window nach dem Download offen bleibt, wie kann ich es automatisch schließen? Die letzte Zeile des obigen Scripts funktioniert so nicht, da ja nach Ausgabe der Header-Infos beendet wird. Oder kann ich diese Zeile zum "CloseWindow" auch irgendwie nach dem Header einbauen, so dass sie auch im Browser ausgeführt wird ?


----------



## SilentWarrior (23. Januar 2005)

Das sollte funktionieren:
	
	
	



```
<body onload="window.close">
```


----------



## FRitter (23. Januar 2005)

Es funktionieren beide Varianten (einmal im HTML-Body + einmal als JS separat aufgerufen), aber mein Problem ist ja in PHP, dass ich die Header-Infos bereits an den Client gesendet habe (error: headers already sent by.....).


----------



## Timbonet (24. Januar 2005)

Zu "headers already sent" gibt es einen wunderbaren Text in der FAQ und es wurde auch x-mal mittlerweile im Forum angesprochen. Vor der Ausgabe der Header darf kein anderes Zeichen an den Client gesendet werden.
Die beiden JS-Sachen werden auch nicht mehr funktionieren, da diese dann praktisch an die Datei angehängt werden, die an den Browser gesendet werden.
Lösung: Ruf den Link einfach nicht in einem neuen Fenster auf...


----------

