1

アプリ用のサーバー側 API を作成しています。手順の 1 つは、アプリがサーバーから非常に大きな zip ファイルをダウンロードすることを必要としますが、ダウンロードするだけでは実行できませんhttp://mydomain.com/file.zip。私のアプリは、いくつかの認証ヘッダーと、php スクリプトで処理する必要があるその他の安全要素を渡します(例: http://mydomain.com/download.php?auth=foo&key=value&etc)

私は以前に画像を使ってこの種のことをしました:

<?php

$can_download = /* some complicated auth stuff */

if($can_download) {
    header('Content-Type: image/jpeg');
    echo file_get_contents('image.jpg');
}

?>

私の質問は、200 MB 以上の zip ファイルで実行できますか? 何らかの方法でヘッダーを変更する必要があり、おそらくいくつかの高度なphp関数を使用する必要があることはわかっていますが、ここ、スタックオーバーフロー、または他のどこにもチュートリアルが見つかりませんでした.

編集:ダウンロードを再開できるはずですが(たとえば47%から)、ユーザーがアプリを終了する可能性が非常に高いため、ダウンロードを再開できる必要もありますそれはできますか?


答えを探している人のために: 正しい関数はreadfileであり、「再開」の問題はこのカスタム関数を使用して解決できます。

4

2 に答える 2

4

この場合に使用する正しい関数はreadfileです。

指定されたコードは、ファイルの内容をブラウザに転送する前に不必要にメモリにロードするため、問題が発生する可能性があります。これはパフォーマンスに影響を与えず、メモリー不足に陥りやすくなります。

于 2013-03-28T11:14:23.390 に答える
1

はい、ただし、代わりに次のようなものを使用したいと考えていますreadfile。その理由はfile_get_contents、ファイル全体をクライアントに渡す前にメモリに読み込むためです。

于 2013-03-28T11:14:36.730 に答える