2011-08-01 35 views
0

下面的代码在桌面浏览器(Chrome,FF)上正常工作,但是当从Android移动设备(HTC Evo,Galaxy S)设备执行时,该文件将被下载但空。我已经添加了下面一行到我的.htaccess文件...从PHP文件下载到Android移动设备时为空。

AddType application/vnd.android.package-archive .apk 

...和下​​载作品,如果我直接从一个HTML锚链接到.apk文件预期。

我需要通过PHP脚本提供下载,以便我可以更新数据库记录。以下PHP方法,甚至还可以在BlackBerry设备上按预期:

public function download($file) 
{ 
    if (!is_readable($file)) { 
     return false; 
    } 
    header('Content-Type: application/vnd.android.package-archive'); 
    header('Content-Disposition: attachment; filename="test.apk"'); 
    header('Content-length: ' . filesize($file)); 
    readfile($file); 
    return true; 
} 

回答

0

廉价的解决方案:远程登录到服务器,说话HTTP直接,见头的区别是什么,从你的PHP脚本下载VS从下载之间服务器。

您还可以查看诸如将用户重定向到文件,或者想要获得复杂的X-sendfile等内容。

你也可以看看这个问题的答案:Fastest Way to Serve a File Using PHP

+0

我要在看如何远程登录,做你所描述的东西,但我并检查文件的标题与cURL和301之后,我得到了一个200 OK并最终在.apk文件。不幸的是,我不能将用户重定向到文件,因为我需要保护它。使情况复杂化的事实是,我正在使用网格服务,并且没有太多的自由,通过SSH(我被监禁在...)。我无法围绕为什么它在除Android之外的每个浏览器/设备组合中都能正常工作。 – jondbaker

+0

这将是奇怪的标题等 - 这就是为什么我建议看看与telnet的区别。 像X-sendfile这样的东西让文件保护,还有其他一些方法。 – Jords

+0

感谢您的回复。只有在使用默认的Android浏览器(安装FF和Opera解决了问题)时才存在问题,但不幸的是,项目流需要默认浏览器。我发现这篇文章http://forum.xda-developers.com/archive/index.php/t-972708.html表明,默认浏览器将不会允许.APK下载而无需安装第三方应用程序(Astro File经理为我工作)来覆盖默认的浏览器过滤器。最后,客户选择只允许该文件位于公用文件夹中,以便将用户重定向到该文件夹​​。 – jondbaker

相关问题