PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei Download erzwingen


DiJae
05.11.2003, 14:56:24
Moin,

gibt es eine Möglichkeit, dass man vermeidet, dass man bei einem Click auf einen Link, der zu einer Datei auf dem Server führt, diese Datei im Fenster geöffnet wird? Beispiel: Wenn ich ein Word Dokument als Download anbiete, dann möchte ich nicht, dass diese Dokument geöffnet wird, sondern dass sich in dem Moment das typische 'Speichern unter...' Fenster öffnet und die Datei lokal abgelegt werden kann.

René_M
05.11.2003, 15:59:06
datei_doc.zip

sourcecode
05.11.2003, 17:53:42
Als zip-File => Blödsinn, denn

1. Woher willst du denn wissen, dass es beim user so eingestellt ist, dass das downgeloadet wird?
2. Wieso extra ein anderes Format?

Statt zur Datei zu linken, linke zum Downloadskript. In diesem sollte folgendes stehen:

<?php
$Datei = "PfadzurDatei/Dateiname.Dateiendung";
$Dateiname = basename($Datei);
$Größe = filesize($Datei);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename="$Dateiname"");
header("Content-Length: $Größe");
readfile($Datei);
?>

Die Header teilen dem Browser mit, dass die Datei downgeloadet werden soll, wie sie heißt und wie groß sie ist.

Ich verwende selber so ein Downloadskript - allerdings soll es noch ein bisschen mehr können und genau da gibt es Probleme:
Downloads sollten geloggt werden, auch solche, die abgebrochen werden - und dann soll erfasst werden, wieviel Daten der user bis dahin downgeloaded hat - leider funktioniert aber nicht die Verbindungskontrolle (connection_aborted und so).

Woran könnte es liegen, dass das nicht funktioniert, welche Bedingungen müssen erfüllt sein? Was kann man noch alternativ machen, um Verbindungsabbruch festzustellen?

René_M
05.11.2003, 18:25:20
hi sourcecode,

mal ne dumme Frage, was ist wenn er gar kein PHP nutzen kann bzw. zur Verfügung steht?

Und in jedem Browser den ich kenne wird eine *.zip zum DL angeboten und nicht im Browser angezeigt.

sourcecode
05.11.2003, 19:18:41
Okay, könnte natürlich sein, dass php nicht zur Verfügung steht (seeeeeeeehr unwahrscheinlich)...dann irgendwie anders lösen. Ja zip wird zum Download angeboten - muss aber nicht, und ist außerdem ein anderes Format.

René_M
05.11.2003, 20:33:40
hi sourcecode,

PHP ist aber auch nicht *.doc ;-)

sourcecode
07.11.2003, 15:44:39
Deshalb gibst du ja mit header("Content-Disposition: attachment; filename="$Dateiname""); den Dateinamen an - da schreibst du dann natürlich nicht den Namen des PHP-Skripts, sondern den der Download-Datei, also z.B. header("Content-Disposition: attachment; filename="example.doc""); und dann wird dieser Dateiname beim Speichern angeboten.

René_M
07.11.2003, 17:19:33
Original geschrieben von sourcecode
...Ja zip wird zum Download angeboten - muss aber nicht, und ist außerdem ein anderes Format.

Meinte eigendlich du verwendest PHP damit es geht und ich eben *.zip. Du meinst *.zip funktioniert nicht immer, ich meine PHP kann nicht jeder nutzen. ;-)

sourcecode
07.11.2003, 20:07:22
Du verwendest zip - zip komprimiert die Daten und erfordert beim user ein extra programm (also zusätzlich zu word zum lesen der doc-datei auch ein zip-programm zum entpacken der komprimierten datei).

Ich verwende php - das komprimiert nicht, sondern schleust sie 1:1 durch => es erfordert also kein extra programm zum dekomprimieren. Und da wir ja hier bei selfphp sind, gehe ich mal davon aus, dass der server php kennt - wenn das so ist, wieso nicht nutzen ? Dem Client ist das absolut egal, dass der Download über ein php-skript läuft.

René_M
07.11.2003, 20:56:31
... richtig wir sind hier bei selfphp aber das (Unter)Forum heißt "HTML und JavaScript Help!" sage mir wer kein Packprogramm auf seinem Rechner hat. Wenn du jetzt sagst gibt es dann sag ich wieder nicht jeder Hoster stellt PHP bereit.

sourcecode
08.11.2003, 12:49:47
Wenn Hoster PHP bereitstellt => Nutze es.
Wenn Hoster kein PHP bereitstellt => vielleicht hat der ja ASP oder sowas, womit man das vielleicht auch machen kann