2011-01-13 10 views
1

Wir haben einig MP3-Datei Sammlung und Flash Player um diese MP3-Datei verwendet, mp3-Datei-Eintrag zu verfolgen unten wir machen MP3-Datei mit PHP-Datei CodePHP Redirect ohne Änderung aktuelle URL?

http://www/example.com/getFile.php?fileid=12

<?php 
$id = $_REQUEST['fileid']; 

// Some code to store download traking and get filename for this id in $filename var. 
$filename = getFileName($id); 

header('Content-type: audio/mpeg'); 
header('Content-Disposition: filename=' . $id . '.mp3'); 
readfile($filename); 

?> 

Aber mp3 Dateigröße in sehr groß und Spieler erhalten Pause in IE, für die wir auch unter Code verwenden

<?php 
$id = $_REQUEST['fileid']; 

// Some code to store download traking and get filename for this id in $filename var. 
$filename = getFileName($id); 

header('Location: '. $filename); 
?> 

dieser Code funktioniert gut, aber seine chnages auch aktuelle URL dh http://www/example.com/getFile.php?fileid=12 zu http://www/example.com/files/xyz.mp3

so benutzer können mp3-datei direkt herunterladen, wie ich das verhindern? mit PHP oder auf andere Weise?

+3

Auch mit Ihrer ersten Lösung kann der Benutzer die Datei einfach herunterladen. ** Eine Anfrage an eine URL gibt Daten zurück, so wie Sie sie in Scheiben schneiden. ** Diese Daten können gespeichert werden. Wie diese Daten serverseitig exakt ausgegeben werden ist irrelevant. – deceze

+0

Und nein, Sie können nicht umleiten, ohne die URL zu ändern. Das ist die Definition einer Weiterleitung: Um die URL zu ändern. – deceze

Antwort

0

(Sorry, die Frage nicht richtig lesen, wenn ich gepostet ursprünglich - jetzt sehe ich, dass das Problem mit IE und großer Dateigröße)

Sie könnten versuchen, dh die Länge zu sagen, und das Spülen die Puffer:

header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
1

Lassen Sie Flash die Datei holen. Geben Sie nur die URL zurück, um über das PHP zu blättern.