我正在编写一个脚本,增加APK文件下载的计数器,然后将文件发送到浏览器进行下载。
这就是我所拥有的:
<?php
$file = "android.apk";
function force_download($file){
header("Pragma: public", true);
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
die(file_get_contents($file));
}
force_download($file
问题是,使用类似Firefox的浏览器,它会下载,但它就像'android.apk - 0 bytes'。所以从本质上讲,它不会下载文件的内容。
我可能做错了什么?解决这个问题?
重要:必须在移动设备上运行。
);
答案 0 :(得分:0)
我从来没有访问过强制下载的.apk链接,所以我不确定强制下载是什么需要。至于递增计数器,我可能只是链接到一个页面,该页面在计数器完成后转发到apk文件。
例如将某人链接到:getapk.php?apkid = 1
然后在getapk.php上做这样的事情:
$update = mysql_query("UPDATE apps SET downloads...");
if ( $update ) { header("Location: appname.apk"); }
当然会遗漏很多细节,但如果您需要其他任何帮助,我很乐意提供更多细节。
答案 1 :(得分:0)
我已经意识到我不需要使用复杂的头信息,特别是如果脚本将从服务器移动到服务器,其中.apk mime类型不是本机的,因此可能很难设置新手。
简单的重定向即可:
$file_name = $_GET['f']; //$_GET['f'] has the link to the file like http://mydomain.com/file/android.apk
//Do database query or increase download counter
header('location: '.$file_name);
瞧!我已经增加了计数器,下载将被推送到浏览器。