我正在尝试使用ZipStream(https://github.com/Grandt/PHPZip)在Kohana 3.3中实时创建和传输zip文件。我认为只要将第一张图像添加到zip就会对zip文件进行流式处理,但是下载会暂停,直到创建完整的zip文件并将其发送给用户。
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Download extends Controller {
public function action_images()
{
require Kohana::find_file('vendor', 'ZipStream');
$zip = new ZipStream("images.zip");
foreach($images as $image)
{
$zip->addLargeFile($image);
}
$zip->finalize();
exit;
}
}
答案 0 :(得分:1)
显然Kohana缓冲输出,可以通过将其添加到下载操作来否定。
while (ob_get_level() > 0) {
ob_end_clean();
}
整个控制器
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Download extends Controller {
public function action_images()
{
while (ob_get_level() > 0) {
ob_end_clean();
}
require Kohana::find_file('vendor', 'ZipStream');
$zip = new ZipStream("images.zip");
foreach($images as $image)
{
$zip->addLargeFile($image);
}
$zip->finalize();
exit;
}
}