0

現時点では、このコードを使用してファイルをユーザーに出力しています。

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$or.'');
readfile($file);

ただし、コードはブラウザにファイルのサイズを通知しません。また、1 GB のような大きなファイルを出力することはできません。コードでブラウザにファイルの実際のサイズを伝え、大きなファイルを出力できるようにしたい

4

3 に答える 3

1

大きなファイルの場合は、チャンク転送を使用する必要があります。ほとんどの場合、基盤となる Web サーバー (Apache/Nginx/WHY) にはそれを行うための機能があります。それらを使用することをお勧めします。

そうすれば、コードが長時間にわたってワーカー スレッドを占有することはなく、ランナウェイ タイマーがダウンロードの途中で中断することもありません (ユーザーを混乱させる可能性があります)。

ところで-アップロードではなくファイルのダウンロードについて話している-それはユーザーからサーバーになります。タグが間違っています。

于 2012-08-20T22:46:19.163 に答える
0

readfile()単独で大きなファイルを送信する場合でも、メモリの問題は発生しません。メモリ不足エラーが発生した場合は、出力バッファリングがオフになっていることを確認してob_get_level()ください。

于 2012-08-20T22:45:59.103 に答える
-1
header("Content-Length: $value");
于 2012-08-20T22:41:30.500 に答える