2012-10-03 148 views
0

我有一個包含許多不同類型文件的文件夾。我需要顯示任何請求的文件,所以標題必須相應地進行調整。我試過是:動態生成標題以顯示請求的文件

header('Content-Type: ' . filetype('files/' . $file)); 

readfile('files/' . $file); 

它爲JPG,PNG和GIF文件,但由於某種原因,MP3文件已經崩潰的瀏覽器,所以我想它不會爲每個文件類型的工作。該方法或代碼有什麼問題嗎?你會怎麼做?謝謝!

回答

3

PHP Documentationfiletype()返回文件的類型。可能的值是fifo,char,dir,block,link,file,socket和unknown。

你想要的是文件的MIME類型。你想要的是Fileinfo。例如:

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
header("Content-Type: ".finfo_file($finfo, 'files/'.$file)); 
finfo_close($finfo); 
readfile('files/'.$file); 

您還可以快速嘗試mime_content_type,如果有的話,只是爲了確保沒有別的毛病系統。但是不建議這樣做,因爲它被刪除了

0

使用這個MP3文件

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 
1

你必須發送正確的MIME類型,並且可能會非常棘手。

您可以使用mime-content-type函數,但這是一個已棄用函數。

$mimetype = mime_content_type ($file); 
header('Content-type: '. $mimetype);