2011-10-27 16 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一样工作...