0

そのため、いくつかの場所やサイトでこれを確認しました。ファイルのダウンロードではContent-Lengthが指定されていないようです。そのため、サーバーがデータの送信を停止するまでダウンロードが続行されます。

動的に生成されたファイルをダウンロード用のPHPスクリプトを介して送信するときに、PHPを使用してこのようなことをどのように実現できるのか疑問に思いました。

私はいくつかの調査を行いましたが、実際には何も見つかりませんでした。

(具体的なとして、ユーザーがまだビルド中にZIPファイルをダウンロードできるようにしたいと思います。)

では、サーバーサイドがどのくらいの時間がかかるかを知らずに、動的に長いダウンロードを作成するにはどうすればよいですか?

4

1 に答える 1

1

Content-Length前述のように、ヘッダーの送信をスキップできます。この関数は便利です:

function force_download($file){
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    //header('Content-Length: ' . filesize($file)); <--- Don't send length
    readfile($file);
}
于 2012-08-10T10:48:58.370 に答える