Заголовки для принудительной загрузки файла apk
Я делаю скрипт, который увеличивает счетчик загрузки файла 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 байт". Таким образом, по сути, он не загружает содержимое файла.
Что я могу делать не так? Решение для этого?
ВАЖНО: Он должен работать на мобильных устройствах.
);
2 answers
Я никогда не обращался к ссылке .apk, которая не вызывала загрузку, поэтому я не уверен, что в этом есть необходимость в принудительной загрузке. Что касается увеличения счетчика, я бы, вероятно, просто сослался на страницу, которая пересылается в файл apk после завершения счетчика.
Например, свяжите кого-нибудь с: getapk.php?apkid=1
Затем на getapk.php сделайте что-то вроде этого:
$update = mysql_query("UPDATE apps SET downloads...");
if ( $update ) { header("Location: appname.apk"); }
Конечно, это оставляет без внимания много деталей, но если вам нужна помощь в чем-то еще, я был бы буду рад предоставить более подробную информацию.
Я понял, что мне не нужно использовать сложную информацию заголовка, особенно если скрипт будет перемещен с сервера на сервер, где тип mime .apk не является родным и поэтому новичку может быть сложно настроить.
Достаточно простого перенаправления:
$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);
Вуаля! Я увеличил счетчик, и загрузка будет перенесена в браузер.