Neuigkeiten:

still alive...

Hauptmenü

PDF\'s nicht öffnen, sondern downloaden

Begonnen von , 22. Februar 2007, 17:00:29

Vorheriges Thema - Nächstes Thema

Ich möchte, dass die online gestellten PDF-Files nicht geöffnet, sondern auf den PC geladen werden. D.h., wenn man den Link anklickt, soll direkt das Abfragefenster kommen \"wohin speichern?\". Nein, ich will keinen Rechtsmausklickhinweis und \"Ziel speichern unter...\"

milindur

Wenn die PDF via PHP ausgeliefert wird, dann kann man das über ein paar HTTP-Header machen - zumindest mache ich das im VCard-Skript so:
 

 
In $pdfcode steht hier der Inhalt der PDF-Datei. Ohne PHP müsste man den Webserver anweisen, dass er \"Content-disposition\" sendet. Leider habe ich gerade keine Ahnung, ob sowas auch per htaccess gehen könnte und welche Rechte (htaccess) dafür dann erforderlich wären.

Nee, die PDF-Datei wird nicht über PHP generiert, sondern liegt \"abholbereit\" in einem Verzeichnis auf dem Webserver.

milindur


Original von IndoorJo Nee, die PDF-Datei wird nicht über PHP generiert, sondern liegt \"abholbereit\" in einem Verzeichnis auf dem Webserver.
[/quote]
Das habe ich mir schon fast gedacht /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />. Also wenn man den Server nicht überreden kann, dann wäre es eine Möglichkeit, dass man das durch PHP \"schleust\". PHP öffnet also die Datei auf dem Server und gibt sie an den Browser weiter, sendet dabei aber die notwendigen Header.
Nicht wirklich schön, würde aber wohl funktionieren. Aber vielleicht gibt es ja noch elegantere Wege... :gaga:

milindur


Danke Christian, ich schaue mir das mal an

Powie

Leute Leute Leute................................
Denkt mal nach! Das hat doch nichts mit PHP zu tun. Das ist eine reine \"Browser\" Angelegenheit. Die Browser gehen nun mal hin und zeigen die .pdf direkt an. Download = rechtsklick + speichern unter o.ä.
Firefox: Extras -> Einstellungen -> Inhalt -> Dateitypen -> Verwalten
 
 /uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />

Powie, Du hast zwar nicht Unrecht, aber es geht mir nicht darum, dass die unbekannten Leute, die auf der Website ein PDF laden können, ihre Browsereinstellungen modifizieren, sondern es nur die Möglichkeit des Downloads geben soll und nicht des Öffnens per http! Und daher muss man schon serverseitig arbeiten und nicht browserseitig - das erwähnte ich aber auch eingangs.

otti_mania

schon mal versucht den Link zur PDF nicht http://www.blabla.de/xyz.pdf\" rel=\"external nofollow\">http://www.blabla.de/xyz.pdf sondern file://blabla.de/xyz.pdf zu nehmen?
das müsste doch selbst dem dümmsten Browser sagen hey nicht öfnen sonder file bereitstellen.
Gruß
Otti

Gruß Otti




#########WICHTIG###########


if (IQ > Raum - °C) echo $post


   else exit ();


##########################




http://www.ottimania.de\" rel=\"external nofollow\">http://www.ottimania.de/banner1.gif\" alt=\"banner1.gif\">



chon mal versucht den Link zur PDF nicht http://www.blabla.de/xyz.pdf\" rel=\"external nofollow\">http://www.blabla.de/xyz.pdf sondern file://blabla.de/xyz.pdf zu nehmen?[/quote]Nö, geht das? Wusste ich gar nicht...?!?!  /uploads/emoticons/icon_e_sad.gif.cc8ba2b6b966c5e020020efa47702aab.gif\" alt=\":(\" />

otti_mania

ok Kommando zurück:
ich hab das mit file mal geschaut das geht mit grafiken aber nicht mit pdf oder ähnlichem.
da bleibt nur eine Lösung für den IE:


header(\'Content-Type: application/pdf\');
header(\'Content-Disposition: attachment; filename=\"downloaded.pdf\"\')

 
 
und eine lösung per php:


$file = \"name der pdf-datei\";
$size = filesize($file);
header(\"Content-Type: application/pdf);
header(\"Content-Disposition: attachment; filename=\\\"\".$file.\"\\\"\");
header(\"Content-Transfer-Encoding: binary\");
header(\"Content-Length: \".$size);
readfile($file);

 
 
Wenn du hier
header(\"Content-Type: application/pdf);
anstelle \"pdf\" \"octet-stream\" oder \"force-download\" übergibst wird der Browser \"gezwungen\" die Datei zu laden.
 
Gruß
Otti

Gruß Otti




#########WICHTIG###########


if (IQ > Raum - °C) echo $post


   else exit ();


##########################




http://www.ottimania.de\" rel=\"external nofollow\">http://www.ottimania.de/banner1.gif\" alt=\"banner1.gif\">


milindur


Original von otti_mania ich hab das mit file mal geschaut das geht mit grafiken aber nicht mit pdf oder ähnlichem.
[/quote]
Glaube ich nicht. file ist kein gültiges Protokoll für Internet bzw. WWW. file wird teilweise für den lokalen  URL-basierten Zugriff auf Dateien auf dem eigenen Rechner verwendet.

Ich habe nun in das Verzeichnis, in welchem die PDF-FIles liegen, eine .htaccess mit folgendem Inhalt reingelegt:
 


ForceType application/octet-stream
 
Header set Content-Disposition \"attachment\"
Header set Content-Type \"application/octet-stream\"

 
Das funzt wunderbar. Man wird dann vom Browser gefragt, ob man die Datei öffnen oder downloaden will.

:H:  Prima, das werde ich doch gleich auch einsetzen. /uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />

all your base are belong to us / Discord