ZipStream和Kohana 3.3

时间:2013-10-18 19:20:41

标签: kohana

我正在尝试使用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;
    }
}

1 个答案:

答案 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;
        }
    }