2013-04-17 4 views
5

Ich muss den Header für eine WAV-Datei erstellen, damit es in das Element spielen.PHP-Header für. WAV-Datei herunterladen, kann aber nicht in Embed spielen

$filename = basename($_GET['file']); 

$pos = strrpos($file, '.'); 

$extension = ($pos !== false) ? substr($file, $pos) : ''; 

$mime_type = ""; 
switch ($extension) { 
    case '.mp3': 
     $mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"; 
     break; 
    case '.ulaw': 
     $mime_type = "audio/basic"; 
     break; 
    case '.gsm': 
     $mime_type = "audio/x-gsm"; 
     break; 
    case '.wav': 
     $mime_type = "audio/x-wav, audio/wav"; 
     break; 
} 

if(file_exists($filename)){ 
    $handle = fopen($filename, "rb"); 

    header('Content-Description: File Transfer'); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Type: '.$mime_type); 
    header('Content-length: ' . filesize($filename)); 
    header('Content-Disposition: attachment;filename="' . $filename.'"'); 

    while (!feof($handle)) { 
     echo fread($handle, 4096); 
     flush(); 
    } 
    fclose($handle); 
}else{ 
    header("HTTP/1.0 404 Not Found"); 
} 

Das von www.example.com/listen?file=Test.en.wav

Vorerst genannt wird, wenn ich auf dieser Seite gehen, versuchen Sie die Datei-Downloads und arbeitet (Die Hälfte von dem, was ich will), aber als ich:

<embed src="www.example.com/listen?file=Test.en.wav"> 

Der Player wird angezeigt, aber die Datei kann/kann nicht abgespielt werden.

Edit: Ich würde gerne wissen, ob es möglich ist, es zu spielen und wie?

+0

Sie über ganze Spieler-Code geschrieben haben? Echo gibt nur die Inhalte einer Datei aus, wie soll es die .wav wiedergeben? – Wookie88

+0

Sorry, meine Frage war nicht sehr spezifisch. Will ich wissen, wie man die Datei spielt, wenn es möglich ist. Vielen Dank! – Benoit

+0

Hallo, ich weiß nicht, ob dies absichtlich sondern 'echo fread ($ handle, 4096);' wird nur die ersten 4 MB einer Datei anzeigen ... – user1909426

Antwort

0

Versuchen Sie audio/vnd.wave.

Per RFC 2361

Versuchen Sie auch nur einen einzigen MIME-Typ anstelle einer durch Kommata getrennte Liste pro Anfrage angeben.

case '.mp3': 
    $mime_type = "audio/mpeg"; 

Sie werden wahrscheinlich auch so etwas wie Quicktime, um installieren müssen diese direkt in Ihrem Browser zu spielen. Einige Browser versuchen Content Mime-Sniffing, um fehlerhafte MIME-Typen zu beheben.

+0

If Ich benutze nur 1 Pantomime für mpeg, sie hören auf in Firefox zu spielen, .wav will immer noch nicht auf firefox spielen, aber sie arbeiten in Chrom. Vielen Dank – Benoit

0

andere Header entfernen und nur auf "Content-Type" header

header('Content-Type: '.$mime_type);