Datei Umbenennen (Dateidownload)

MadCrusher

Erfahrenes Mitglied
Hallo!

Ich habe ein Login-Bereich geschrieben, bei dem Admins files hochladen können (pdfs, docs etc).
Da manche Namen der Dateien Doppelt vorkommen können, speicher ich die Files mit Timestamp.Typ ab und behalte in der Datenbank den Originalen namen.

Wenn ich nun einen Downloadlink anbiete, über den die Datei zu kriegen ist, möchte ich gern wieder den alten Namen der Datei beim Download haben.

Kann jemand helfen?

Gruß
Crusher
 
Also ne Idee wäre vielleicht, das du die Datei mit dem Timestamp vorher in ein Downloadverzeichnis kopierst und dort dann den orginalen Dateinamen vergibst.

LG Heiko
 
Man kann z.b. als downloadlink eine eigene download.php Datei erstellen, der du nen eindeutigen Bezeichner übergibst.
Dort in der php Datei, die Datei die man herunterladen will öffen, im Header den Dateinamen + content-type richtig setzen und die Datei ausgeben.
PHP:
<?php
$path="./downloads/";
$filelist= array(
    array(
      "name" => "test.pdf",
      "mime" => "application/pdf",
      "localname" => "1.file"
    ),
    array(
      "name" => "test.jpg",
      "mime" => "application/jpg",
      "localname" => "2.file"
    )
  );

$localname=$filelist[$_GET["file"]]["localname"];
$filename=$filelist[$_GET["file"]]["name"];
$filemime=$filemime[$_GET["file"]]["mime"];

$fh=fopen($path.$localname,"r");

header("Content-Type: ".$filemime);
header("Content-Disposition: filename=".$filename);
header("Content-Length: " . filesize($path.$localname));

fpassthru($fh);
fclose($fh);
?>

Das Filelist Array holt man sich am Besten aus der Datenbank, fürn mime-type gibts auch Php Funktionen, habs der Einfachheit halber fest reingeschrieben.
Im "downloads" Verzeichnis liegen 2 Dateien: 1.file und 2.file, die man mit download.php?file=0 bzw download.php?file=1 runterladen kann.

Gruss
Alex
 
Zuletzt bearbeitet:
Hmm..

Wie soll das Funktionieren?
Ich habe eine Datei mit text und dem link der auf die Downloaddatei verweist.
Wie kann ich nun den header von der datei verändern?

Crusher
 
Zurück