0

我有一个带有按钮的页面,该按钮重定向到启动 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 设备的 Chrome、所有主要的桌面浏览器,以及一些 Android 设备上的普通浏览器。但是,在我的手机 (HTC Rezound) 和 Galaxy Tab 2 的普通浏览器上,短按按钮无法下载 - 即使在这些设备上的 Chrome 上运行,也无法开始下载。长按按钮,然后从出现的上下文菜单中选择“打开”,确实可以从股票浏览器下载 APK。关于为什么没有在股票浏览器上短按开始下载的任何想法?

编辑:

我应该提到,用于链接到此下载的按钮位于 iframe 中。相反,如果我执行 document.location.href = (download script URL) 而不是在文档加载时将脚本的源代码加载到 iframe 中,则下载确实可以通过短按进行。与股票浏览器如何处理 iframe 有关?页面和它指向的脚本在同一个域中。

4

2 回答 2

1

问题是它在 iframe 中。添加

target="_blank"

到指向下载的锚标签,根据这个问题的答案,我马上就解决了。

于 2013-05-09T16:38:13.080 回答
1

将您的内容类型更改为octet-stream

header('Content-Type: application/octet-stream');
于 2013-05-09T15:56:40.650 回答