在CakePHP 1.3中正确的方式创建zip文件并下载而不离开视图

时间:2013-08-28 17:07:02

标签: cakephp download zip cakephp-1.3 render

我刚从cakephp 1.1升级到1.3。除了创建和下载zip文件外,我在网站上的所有内容都已更新并且运行良好。

以下是我的accounts_controller.php中的代码:

  function zip() {
        $this->checkSession();
        $this->checkUpgradedAccount();
        $files = array();
        $this->layout="zip";

    /*
    code where I locate the files to zip, combine them, etc
    */

            $tmp_file = "/home/[userdirectory]/tmp/".md5(mktime()).".zip";  //directory name edited
            $command = "/usr/bin/zip -j $tmp_file ".implode(" ",$zip_files);
            exec($command);
            foreach($zip_files as $zf) {
                unlink($zf);
            }
            $file_path = $tmp_file;
            $this->set("path",$file_path);
            $this->render();
}

但是,当我调用此操作时,出现错误:

  

错误:找不到请求的地址'/ accounts / zip'   服务器

它在1.1版中就像这样工作。我假设某些事情发生了变化,但我不确定是什么,并且无法在文档中找到任何相关内容。

zip.ctp视图文件确实存在,但除了以下内容之外没有任何内容:<?php ?>

我怀疑布局有所不同。 / layouts目录中没有“zip.ctp”。但是,我已将该行更改为$this->layout('default');,并且它呈现一个空白页面,没有错误,但也没有下载。

请指导我在蛋糕1.3中下载我的zip文件的正确方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

这里有两个不同的问题。你得到的错误是因为你没有zip布局文件。至于获取zip文件的问题,您应该使用媒体视图类 - http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Views.html#media-views