从android浏览器下​​载mp3文件

时间:2015-02-14 05:17:50

标签: php android-browser

我提到了这些问题并实施了他们的答案,但没有一个对我有用。

download mp3 instead of playing in browser by default?

PHP Streaming MP3

content type for mp3 download response

download mp3 from web url with android failed

基本上,当用户点击网站上的下载链接时,我们希望系统提示用户下载音频文件。

代码:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mtype");         
header("Content-Disposition: attachment; filename=".$file_name);
readfile($fname);
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $fsize);

此处$mtype"audio/mpeg"

成功:

  1. 它可以在所有桌面浏览器上正常运行。
  2. 我尝试使用BlackBerry,我收到了下载的文件。
  3. 失败:

    1. 当我对Android浏览器执行相同操作时,我没有获得下载的文件。
    2. 文件名也缺失,附带<untitled>并显示状态"download unsuccessful"
    3. 如果您知道为什么此代码无法在Android手机上运行,​​请相信。

2 个答案:

答案 0 :(得分:0)

遇到同样的问题,可能是你的服务器不允许你正确使用mp3文件(我使用Biz.nf)

答案 1 :(得分:0)

我刚刚找到了这个问题的解决方案。在我的机器人小米上它完美无缺。

if (file_exists($file)) {
    echo "OK";
    if (ob_get_level()) {
  ob_end_clean();
} // clearing output script buffer

$mime_type = "audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3";
header('Content-Description: File Transfer');
header('Content-Type: {$mime_type}');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);