2011-10-27 17 views
2

我爲我工作的樂隊舉辦了一個網站。我有一個全功能的會員部分,登錄。我有一個.htaccess文件夾,可以保護我的mp3免受熱/直接鏈接。我可以讓這些文件在Safari,Chrome和Firefox中播放,但不能在我的iPhone上播放!iOS5 Mobile Safari通過使用php提供mp3服務

我通過在php文件中使用頭文件來提供內容,該文件反過來創建html5音頻標籤以提供內容。我已經嘗試在PHP中的readfile()沒有成功。

php文件波紋管:(減去安全檢查)

$_GET['f'] = "privatefolder/" . $_GET['f']; 
$filename = $_GET['f']; 
$filesize = @filesize($filename); 

$len = strlen($filename); 
$shortlen = $length - 1; 
header('Content-Range: bytes 0-'.$shortlen.'/'.$len); 

header("Last-Modified: ".filemtime($filename)); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg");//mpeg 
header("Etag: W5M0MpCehiHzreSzNTczkc9d"); 
header("Content-Description: {$filename}"); 
header("Content-length: {$filesize}"); 
header("Content-Disposition: filename=button.mp3"); 
header("X-Pad: avoid browser bug"); 
header("Cache-Control: no-cache"); 
header("Connection: close"); 

echo "<audio controls='controls'><source src='".file_get_contents($_GET['f'])."' type='audio/mp3' /></audio>"; 
exit; 

此代碼的工作以及在所有主要的瀏覽器,但在我的iPhone,移動Safari試圖打開頁面時鎖死和崩潰!

我錯過了什麼?我假設它是一個標題問題,以及quicktime「下載/流」的方式。我一直在爭取這個2周,嘗試了我能找到的每一個解決方案!請幫助!!!

*只是一個附註:我已經在Opera Mini Browser中打開了頁面,它將鏈接發送到safari並在quicktime中播放,沒有問題?所以我知道這是可能的!

回答

0

您無法發送標題,使其看起來像是mp3文件,並且同時包含HTML。我很震驚它可以在任何瀏覽器中使用。

您的HTML應該是類似於<audio><source src="/path/to/mp3.php"></audio>其中mp3.php有標題並輸出mp3文件的內容。

+0

感謝您的回覆!我最初嘗試這種方式,無論什麼原因,它沒有工作。看來你必須清除你的緩存並重新啓動Safari才能正常工作。所以這就是我所處的位置。該方法適用於Safari和Chrome,但不適用於Firefox。 [測試鏈接](http://www.pvband.org/testlink1.php)在移動Safari中它說無法讀取文件。我真的不太在意Firefox。我通常強迫這些文件下載給我的學生,但我真的很希望這可以在iphone上使用Mobile Safari。有任何想法嗎? – JazzyB

1

它適用於iOS4,它在iOS5上失敗。 我認爲擴展必須是「mp3」才能像mp3一樣工作...