habe das Problem wie folgt gelöst.
- Code: Select all
// $download sei der Bezeichner für die zu ladende Datei
$download = $_GET['trackid'];
// Dieses Verzeichnis liegt außerhalb des Document Root und
// ist nicht per URL erreichbar.
$basedir = "/opt/web8";
// Übersetzung von Download-Bezeichner in Dateinamen.
$title1 = preg_replace('/ /',"_",$title);
$filelist = array("$trackid" => 'files/'.'adb'.$id.'edb'.$title1.'.mp3');
// Einbruchsversuch abfangen.
if (!isset($filelist[$download]))
die("Datei $download ist nicht vorhanden.");
// Vertrauenswürdigen Dateinamen basteln.
$filename = sprintf("%s/%s", $basedir, $filelist[$download]);
// Passenden Datentyp erzeugen.
header("Content-Type: application/zip");
// Passenden Dateinamen im Download-Requester vorgeben,
// z. B. den Original-Dateinamen
$filelist[$download] = $artistname.' - '.$title.'.mp3';
$save_as_name = basename($filelist[$download]);
header("Content-Disposition: attachment; filename=\"$save_as_name\"");
// Datei ausgeben.
readfile($filename);
Jetzt habe ich aber das nächste Problem:
Es werden automatisch Playlisten der Mp3 Files erstellt, in den m3u Files muss jetzt der Pfad rein, in dem die MP3 Datei liegt. Jetzt habe ich das Problem, das ich ja nicht mehr direkt auf das Mp3file zugreifen kann (außerhalb von doc root). Wie kann ich den Pfand in der m3u Datei so umbiegen, dass er auf das richtige MP3 File zeigt?