Download erzwingen bei anklicken eines Links

Hi, ich möchte auf meiner Webseite einige Termine bekanntmachen und einen Outlookkalendereintrag mit dem Termin so verlinken, dass beim Anklicken das Element geöffnet wird und mit Speichern in den Outlookterminkalender eingetragen wird. Ich habe einen normalen Hyperlink in Frontpage kreiert. Wenn man den anklickt geht der Quelltext in Mozilla auf. Wie kann ich erzwingen, dass die Datei XYZ.ics gleich runtergeladen und geöffnet wird, damit sie in Outlook gespeichert werden kann? Rechtsklick und download ist für die meisten Leser zu schwierig und erfordert einen zu hohen Erklärungsaufwand.

Hat jemand eine Idee? Hier ist ein Link der funktioniert, ich verstehe aber nicht wie http://www.ra-micro.de/elearning/pl/elearn0026.pl?Te…

thx :smile:

Hallo Gerhard,

ich möchte auf meiner Webseite einige Termine
bekanntmachen und einen Outlookkalendereintrag mit dem Termin
so verlinken, dass beim Anklicken das Element geöffnet wird
und mit Speichern in den Outlookterminkalender eingetragen
wird. […] Hier ist ein Link der funktioniert, ich
verstehe aber nicht wie
http://www.ra-micro.de/elearning/pl/elearn0026.pl?Te…

Dazu brauchst Du eine serverseitige Programmiersprache, welchen die entsprechenden Header an den Browser sendet, damit er das File nicht selbst zu öffnen versucht sondern herunterlädt. Im Link von Dir ist es ein Perl-Skript, das dies erledigt, mit PHP ginge das z.B. so:

<?php header('Content-Type: text/calendar');<br />header('Content-Disposition: attachment; filename="XYZ.ics"');
readfile('./XYZ.ics');
?\>

Das hat mit „HTML und CSS“ aber nicht viel zu tun.

Ciao
Rudy

Erst mal danke!

heißt das, dass ich erst Perl oder PHP lernen muss, um das hinzukriegen? :frowning: Mit Frontpage habe ich keine Chance? Kann man so ein PHP Script in den HTML Quellcode reinkopieren, würde das gehen?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

heißt das, dass ich erst Perl oder PHP lernen muss, um das
hinzukriegen? :frowning:

Nicht unbedingt… recht viel länger als das Skript, das ich vorher gepostet habe, wird das nicht, es würde also vorerst reichen, wenn Du die paar Zeilen verstehen würdest. Es fragt sich nur, was auf Deinem Server überhaupt läuft. ASP, PHP, Perl,…

Mit Frontpage habe ich keine Chance? Kann
man so ein PHP Script in den HTML Quellcode reinkopieren,
würde das gehen?

Nein und Nein. Frontpage ist sowieso ein fragliches Werkzeug; HTML ist keine Programmiersprache und läuft nicht auf dem Server, sondern wird am Client (dem Browser) interpretiert. Da sind die Header schon gesendet.

Ciao
Rudy

Ich glaub mein Schwein pfeift!

Wie kann ich erzwingen, dass die Datei XYZ.ics gleich
runtergeladen und geöffnet wird, damit sie in Outlook
gespeichert werden kann?

Herunter geladen und gleich geöffnet wird selbst bei dem von dir geposteten Link nichts. Stattdessen werde ich gefragt was ich damit machen will. Speichern oder gleich öffnen.

Wo kämen wir denn da hin, wenn der Seitenbetreiber den Besucher zum Download und öffnen einer Datei zwingen könnte? Zu etwas zwingen lässt sich der Besucher von niemandem!

Hast Du auch nur ansatzweise eine Ahnung was das für Betrüger und sonstige Kriminelle bedeuten würde? Alleine der Versuch ist absoluter Irrsinn!

Gruß Marcus

Hallo,

Dazu brauchst Du eine serverseitige Programmiersprache,
welchen die entsprechenden Header an den Browser sendet, damit
er das File nicht selbst zu öffnen versucht sondern
herunterlädt.

es ist keine serverseitige Programmiersprache erforderlich, um den Webserver anzuweisen, den korrekten Content-Type anzugeben. Bei Apache genügt es etwa eine unbekannte Dateiendung vermittels der AddType-Direktive zu registrieren (wobei ics eigentlich bereits in der Standardkonfiguration als text/calender definiert ist) - weiterhin können entsprechende, dateibezogene Konfigurationen über die Files- bzw. FilesMatch-Direktiven erfolgen.


PHvL

Hi Philipp,

Dazu brauchst Du eine serverseitige Programmiersprache,
welchen die entsprechenden Header an den Browser sendet, damit
er das File nicht selbst zu öffnen versucht sondern
herunterlädt.

es ist keine serverseitige Programmiersprache erforderlich, um
den Webserver anzuweisen, den korrekten Content-Type
anzugeben. Bei Apache genügt es etwa eine unbekannte
Dateiendung vermittels der AddType-Direktive zu registrieren
(wobei ics eigentlich bereits in der Standardkonfiguration als
text/calender definiert ist)

Das ist mir bekannt, bringt aber in dem Fall nichts. Den Content-Type im Skript gebe ich ja nur aus, weil der Dateiinhalt über das PHP-Skript an den Browser übergeben wird. Das Content-Disposition:attachment, mit dem der Browser angefordert wird, den Download-Dialog anzuzeigen anstatt zu versuchen, die Datei direkt darzustellen, kann ich so nicht lösen - und das war ja das eigentliche Problem, dass der Browser versucht hat, die ICS-Datei anzuzeigen.

weiterhin können entsprechende,
dateibezogene Konfigurationen über die Files- bzw.
FilesMatch-Direktiven erfolgen.

Hab ich im Gegensatz zu addtype noch nie benötigt. Lässt sich da auch der Content-Disposition-Header für gewisse Filetypes setzen?

Ciao
Rudy

Hallo,

Das Content-Disposition:attachment, mit dem der Browser
angefordert wird, den Download-Dialog anzuzeigen anstatt zu
versuchen, die Datei direkt darzustellen, kann ich so nicht
lösen - und das war ja das eigentliche Problem, dass der
Browser versucht hat, die ICS-Datei anzuzeigen.

mit „der Browser“ ist eigentlich „der IE“ gemeint?

Aber deshalb ja mein Nachsatz:

weiterhin können entsprechende, dateibezogene Konfigurationen
über die Files- bzw. FilesMatch-Direktiven erfolgen.

Hab ich im Gegensatz zu addtype noch nie benötigt. Lässt sich
da auch der Content-Disposition-Header für gewisse Filetypes
setzen?

Ja.


PHvL

Hallo,

Das Content-Disposition:attachment, mit dem der Browser
angefordert wird, den Download-Dialog anzuzeigen anstatt zu
versuchen, die Datei direkt darzustellen, kann ich so nicht
lösen - und das war ja das eigentliche Problem, dass der
Browser versucht hat, die ICS-Datei anzuzeigen.

mit „der Browser“ ist eigentlich „der IE“ gemeint?

kA, ist uninteressant.

Hab ich im Gegensatz zu addtype noch nie benötigt. Lässt sich
da auch der Content-Disposition-Header für gewisse Filetypes
setzen?

Ja.

Wie?

Ciao
Rudy

Hallo,

Hab ich im Gegensatz zu addtype noch nie benötigt. Lässt sich
da auch der Content-Disposition-Header für gewisse Filetypes
setzen?

Ja.

Wie?

naheliegenderweise durch die Direktive Header des Apache-Moduls mod_headers:

Header append Content-Disposition "attachment;"

Vgl. auch in der Dokumentation von Apache (gesucht etwa nach „Header“): http://httpd.apache.org/docs/2.2/mod/mod_headers.html


PHvL

Hi Philipp,

naheliegenderweise durch die Direktive Header des
Apache-Moduls mod_headers:

Header append Content-Disposition
„attachment;“

Vgl. auch in der Dokumentation von Apache (gesucht etwa nach
„Header“):
http://httpd.apache.org/docs/2.2/mod/mod_headers.html

Hübsch, danke - was dazu gelernt.

Ciao
Rudy