【发布时间】:2012-05-29 16:07:17
【问题描述】:
我有一个链接,可以在他们可以阅读的所有移动设备上下载 mp3。 我还有一台装有 Android 2.3.4 的 Acer E320,我想通过单击我的链接(Web 服务器 Apache;这是该链接后面的一些 PHP 源代码)下载我的 mp3。
我尝试使用 BlackBerry,并获得了文件。 我尝试使用带有 Android 的三星 Galaxy S 用户代理的 Firefox 浏览器,我得到了文件。 我尝试在我的 Acer E320 上使用相同的 Android 2.3.4,然后......我没有得到文件。
我很确定这来自操作系统,我明天会尝试使用 Windows Phone,但我很确定这会有效。
这里是我的下载源:
<?php
// assume that all variables are correctly set
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: audio/mpeg");
header('Content-Disposition: attachment; filename="'.$filename.'";');
header("Content-Transfer-Encoding: binary");
header('Content-Range: ' . $download_range);
header('Content-Length: ' . $download_size);
readfile($filename);
?>
感谢您知道为什么此代码无法在 Android 手机上运行。
编辑:我尝试使用带有 Windows Phone 操作系统的 HTC。下载没有开始,但我可以在 apache 日志上看到我的点击...看来 Android 并不孤单...
第二次编辑:我终于找到了:Android 完成了一个预取,因为一次性令牌而终止了我的下载。 谢谢大家
【问题讨论】:
-
您是否确认 E320 确实传输了全部字节,甚至根本没有命中服务器? (检查访问日志)。
-
@MarcB 我只看访问日志,是的,我可以看到我在 3 台服务器中的 1 台上的命中(我是负载平衡的)。我还检查了 $download_range == $download_size == filesize($filename)。我终于确认 $filename 是绝对路径...
-
请在下方输入答案,并确认以最大程度地帮助未来的用户