【问题标题】:Correct way in CakePHP 1.3 to create zip file and download without leaving viewCakePHP 1.3 中创建 zip 文件并在不离开视图的情况下下载的正确方法
【发布时间】:2013-08-28 17:07:02
【问题描述】:

我刚刚从 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');,它呈现一个没有错误的空白页面,但也没有下载。

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

【问题讨论】:

    标签: cakephp download zip cakephp-1.3 render


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我想知道是否可能不止一个。谢谢你的链接。我错过了——它看起来很有帮助。如果我使用我的“默认”布局,这个类会阻止我的页面尝试转到 /zip 吗?我希望它保持在同一页面上并下载文件。
    • 假设您没有在其中一个布局中插入一些不寻常的代码,您使用的布局不应影响控制器或模型逻辑发生的情况。所以我认为你可以使用任何一个都很好。
    • 谢谢 - 媒体视图似乎工作得很好。我可以很好地下载pdf文件。但是,当我尝试下载 .zip 文件时,文件大小是正确的,但是当我尝试解压缩它时,Windows 说它是空的。如果我通过 ftp(而不是浏览器)下载完全相同的文件,那很好。有任何想法吗?如果需要,我可以发布一个新问题。
    • 我的第一个猜测是 zip 文件没有正确创建。您是否尝试过保存 zip 文件,然后检查服务器上保存的文件以查看它们是否真的有数据?
    • 我有。我什至通过 FTP 上传了一个有效的 zip,然后尝试通过浏览器下载它,它下载为无效。在这里查看我的新线程:stackoverflow.com/questions/18512990/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多