"Speichern unter"-Dialog

psykochris

Mitglied
Hi @ all,
habe folgendes Problem:
Wenn ich auf meinem Filemanager auf einen Downloadlink klicke, wird die Datei (soweit möglich) immer geöfftnet. Das soll aber nicht so sein!
Ich möchte immer den "Speichern unter"-Dialog erhalten.
Könnt ihr mir bitte zeigen wie ich das in folgendem PHP-Script schreiben muss?
Danke im voraus.

psykochris

Script (Ausschnitt):
Code:
$handle=opendir('uploadfiles/.');
while ($file = readdir ($handle))
{
	if ($file != "." && $file != "..")
	{
		echo '<tr><td>b><a href="uploadfiles/';
		echo $file;
		echo '">';
		echo $file;
		echo '</a></b></td><td>&nbsp;</td>';
		echo ('<td><a href="del.php?datei_zum_loeschen='.$file.'" 
	}
}
closedir($handle);
 
Schau mal in den Kommentaren zu [phpf]header[/phpf]. Du mußt auf ein PHP-Skript verweisen, welches die Datei dann ausliest und mit entsprechendem HTTP-Header an den Browser schickt.
Der Einfluß ist jedoch begrenzt, da die letzliche Entscheidung beim Browser liegt. Das Verhalten wird nun mal in erster Linie clientseitig entschieden und ein Client muss sich nicht an Deine "Empfehlung" halten.

Gruß hpvw
 
psykochris hat gesagt.:
Das oben gepostete Script liest die Datei(en) aus dem Ordner "uploadfiles" aus, und gibt sie als Downloadlink aus...
Deswegen wirst Du in dem Skript auch nicht erreichen, dass die Datei zum Download angeboten wird und mußt den von mir beschriebenen Umweg machen.

http://de.selfhtml.org/html/verweise/dateitypen.htm#download hat gesagt.:
Es gibt keine spezifische Notation in HTML, um Dateien beim Anklicken zum Downloaden anzubieten.

Gruß hpvw
 
Hallo!

Es ist mit php möglich, Dateien in .zip - Archive zu packen, die vom Client meines Wissens nach immer mit dem gewünschten Dialog gehandelt werden.

mfg,
schrenzor
 
Es ist nicht immer moeglich mit ZIP zu arbeiten.
Das kommt auf den Provider an.
PHP4 unterstuetzt die ZZipLib, welche PHP beim kompilieren angegeben werden kann damit ZIP-Funktionen (ich glaub read-only) zur Verfuegung stehen.
Ab PHP5 muss man auf eine Extension zurueckgreifen. Diese unterstuetzt auch das Erstellen von ZIPs.

Das Problem ist halt, dass dies nicht standard-maessig integriert ist.
Weit haeufiger trifft man gZip-Unterstuetzung an.
Dies kann auch mit den gaengigen Packprogrammen entpackt werden, sodass auch unter Windows keine Probleme entstehen.

Der kleine Nachteil ist jedoch, dass man mit gZip nur eine Datei komprimieren kann. Man kann nicht mehrere Dateien in ein Archiv packen. Aber darum geht es hier ja so wie ich sehe nicht.

Ein kleines Beispiel zum Thema gZip-Compression hab ich auf meiner Website hinterlassen.

Uebrigens, hier ist der header() den Du suchst:
PHP:
header('Content-Disposition: attachment; filename="downloaded.pdf"');
Der Dateiname muss natuerlich angepasst werden. Am besten durch eine Variable mit dem entsprechenden Dateinamen ersetzen.
 
Du kopierst Dir das oben schon verlinkte Skript. Dazu schreibst Du noch ein bisschen Code, der den per Paramter übergebenen Dateinamen ausliest und rufst mit diesem Wert die Funktion auf.
In Deinem Skript verweist Du nicht mehr auf die Datei, sondern auf das Skript mit entsprechendem Parameter.

Gruß hpvw
 
Zurück