2013-04-17 25 views
5

我必須爲.wav文件構建頭文件才能在元素中播放。Php header for .wav文件下載但無法在嵌入中播放

$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"); 
} 

這是由www.example.com/listen?file=Test.en.wav

叫做現在,當我去該網頁上,文件下載和作品(我想要的一半),但是當我嘗試:

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

播放器出現,但文件不能/不能播放。

編輯:我想知道是否有可能使它發揮和如何?

+0

您已經發布了上述整個播放器的代碼? Echo只打印文件的內容,它應該如何播放.wav文件? – Wookie88

+0

對不起,我的問題不是很具體。想要知道如何播放文件,如果可能的話。謝謝! – Benoit

+0

你好,我不知道這是有意的,但是'echo fread($ handle,4096);'只會顯示文件的前4MB ...... – user1909426

回答

0

嘗試audio/vnd.wave

RFC 2361

還嘗試僅指定每個請求,而不是用逗號分隔的列表中的單個MIME類型。

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

你可能還需要以直接在瀏覽器中播放這些安裝類似Quicktime。有些瀏覽器嘗試通過內容[MIME]嗅探修復錯誤的MIME類型。

+0

如果我只使用1 mime作爲mpeg,他們停止在Firefox中播放,.wav仍然不想在Firefox上播放,但他們在Chrome中工作。謝謝 – Benoit

0

刪除其他頭,只是設置 「的Content-Type」 頭

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