0

次のコードを使用して、約 920MB のファイルをダウンロードしました。

set_time_limit(0);

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");

header("X-Sendfile: $zipname");                 // For Large Files

header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=\"".$zipname."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($directory_location . '/' . $zipname));
ob_end_flush();

readfile($directory_location . '/' . $zipname);

このコードの前に、次のリンクUsing X-Sendfile with Apache/PHPStreaming a large file using PHPおよびLimit download speed using PHP を使用していくつかの調査を行いましたが、ファイルのダウンロードにはまだ時間がかかるため、あまり役に立ちません (2MB)ファイル。転送速度などは表示されません。ダウンロードを開始して、すべてのファイル (大または小) で約 60Kbps のファイルを提供したい

更新:実行中のダウンロードプロセスが表示されず、しばらくしてポップアップを表示して場所を選択し、保存ボタンを押した後、ダウンロードプロセスウィンドウなしでコンピューターに直接保存することに気付きました:(

正しい道を導くために私を助けてください。

4

1 に答える 1

0

上記のコメントに基づいて、2 つの解決策があります。

1) ファイルを直接ダウンロードするだけです。検証を行っていないようです。そうでない場合は、ユーザーをファイルに渡してダウンロードし、apache に処理させます。

2) 検証/前処理が必要な場合は、mod_xsendfile を確認してください。ヘッダーを追加するだけでは不十分です。実際には、mod を apache に追加する必要があります。Linux を使用している場合は、ソースからコンパイルします ( https://tn123.org/mod_xsendfile/ )。Linux を使用していない場合は、Win x64 用の mod_xsendfile を使用しますか? バイナリを提供できるという著者からの応答がありますが、それは 2010 年のことです。Web にはちょっとしたアドバイスがあります。

于 2013-10-21T10:32:21.777 に答える