3

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バイト」のようなものです。したがって、基本的に、ファイルの内容はダウンロードされません。

私は何を間違っているのでしょうか?これに対する解決策は?

重要:モバイルで動作する必要があります。

);

4

2 に答える 2

0

ダウンロードを強制しなかった.apkリンクにアクセスしたことがないので、強制ダウンロードの必要性が何であるかわかりません。カウンターをインクリメントする限り、カウンターが完了した後にapkファイルに転送するページにリンクするだけです。

たとえば、誰かを次のようにリンクします:getapk.php?apkid = 1

次に、getapk.phpで次のようなことを行います。

 $update = mysql_query("UPDATE apps SET downloads...");
 if ( $update ) { header("Location: appname.apk"); }

もちろん、それは多くの詳細を省略しますが、他に何か助けが必要な場合は、私はより多くの詳細を提供させていただきます。

于 2012-12-14T21:19:52.287 に答える
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);

出来上がり!カウンターを増やしました。ダウンロードはブラウザーにプッシュされます。

于 2012-12-14T22:46:11.517 に答える