我有一个带有按钮的页面,该按钮重定向到启动APK下载的PHP脚本,如下所示($ androidPackage是文件名,$ package包含绝对路径):
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename=' . $androidPackage);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($package));
ob_clean();
flush();
readfile($package);
exit;
此方法适用于多个Android设备,所有主要桌面浏览器以及某些Android设备上的股票浏览器。但是,在我的手机(HTC Rezound)和Galaxy Tab 2上,在股票浏览器上,只需按一下按钮即可完成下载 - 它无法启动,即使这可以在这些设备上的Chrome上运行。长按按钮,然后从出现的上下文菜单中选择“打开”,可以从股票浏览器下载APK。关于为什么下载不是从股票浏览器上短按开始的任何想法?
编辑:
我应该提到用于链接到此下载的按钮位于iframe中。相反,如果我执行document.location.href =(下载脚本URL)而不是在文档加载时将脚本的源加载到iframe中,则下载确实可以短按。与股票浏览器如何处理iframe有关?该页面及其指向的脚本位于同一个域中。
答案 0 :(得分:1)
将您的内容类型更改为octet-stream
:
header('Content-Type: application/octet-stream');
答案 1 :(得分:1)