Hi Marian,
header("Location: $filepath\n");
Auch hier ist es natürlich so, dass man die Datei auch direkt runterladen könnte.
Zudem würde ich das PHP Script auf den Server setzen, auf dem auch die Download-Dateien liegen, denn so ist ein „weiterreichen” der Dateien problemlos möglich. Das geht so: Das PHP Script liest die Datei die downgeloadet werden soll ein, packt die korrekten Header davor und gibt den Datei Inhalt wieder aus.
So könnte das ungefähr gehen:
// Wir gehen davon aus, in $file steht der Pfad zu
// einer real auf dem Server existierenden Datei
// $file darf keine URL sein, sondern eben ein Dateipfad
// Content-Type feststellen (geht erst ab PHP 4.3.0
$content_type = mime_content_type($file);
// Dateigröße
$filesize = filesize($file);
// Datei öffnen und sperren
if(!($fp = fopen($file, "r") AND flock($fp, LOCK_EX)))
{
die("Fatal Error: Could not open and lock the requested file.");
}
// Datei auslesen und wieder schließen
$content = fread($fp, $filesize);
fclose($fp);
// Header senden
header("Content-type: $content_type"); // Dateityp
header("Content-disposition: attachment; filename=".basename($file)); // Dateiname
header("Content-length: ".$filesize); // Dateigröße
// und Datei ausgeben
echo $content;
// Script beenden
exit;
Das habe ich gerade eben mal zusammengestellt - zwar auch getestet heißt aber nicht, dass es in allen Fällen einwandfrei funktioniert ;-)
Um die Funktion mime_content_type() auch in PHP < 4.3.0 nutzen zu können, braucht man eine macig.mime Datei und diese Funktion.
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)