1

私は質問から自分のサイトで次のコードをテストしています: LAMP: ディスク/CPU のスラッシングなしで、オンザフライでユーザーのために大きなファイルの .Zip を作成する方法

<?php
// make sure to send all headers first
// Content-Type is the most important one (probably)
//
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="file.zip"');

// use popen to execute a unix command pipeline
// and grab the stdout as a php stream
// (you can use proc_open instead if you need to 
// control the input of the pipeline too)
//
$fp = popen('zip -0 -r - file1 file2 file3', 'r');

// pick a bufsize that makes you happy (8192 has been suggested).
$bufsize = 8192;
$buff = '';
while( !feof($fp) ) {
   $buff = fread($fp, $bufsize);
   echo $buff;
   flush();
}
pclose($fp);

その場でジッピングをストリーミングするのに適しています。

ただし、ファイル サイズがユーザーに送信されないという問題があります。おそらく、その場で圧縮してデータを送信するためです。

私はゼロ圧縮圧縮を使用しているため、サイズがわかっているため、サイズをユーザーに送信する方法はありますか? ありがとう

4

1 に答える 1

0

次のように content-length ヘッダーを送信する必要があります。

header("Content-Length: $filesize");
于 2012-08-08T14:24:41.663 に答える