CakePHP:如何在使用$ this-> response-> file()时设置文件名

时间:2013-09-27 14:00:35

标签: php cakephp cakephp-2.0 download

我们发送一个zip文件下载作为这样的回复:

    $this->response->file( "/export/stuff.zip", array('downlaod'=>true, 'name'=>"stuff.zip") );
    return $this->response;

这很好用,但文件总是以export.zip命名。我们的name选项似乎没有任何效果。我们也试过没有.zip扩展名。这很令人困惑,因为name选项在文档中显示为here

我们做错了什么?

更新 我们发现看似任意名称“export”正在从控制器动作的名称中复制出来。我们将方法名称更改为“admin_exportt”,然后每次都获得exportt.zip。这在我见过的任何地方都没有记录。

我们在源代码中找到了名称的处理位置(/lib/Cake/Nework/CakeResponse.php:1254),看起来应该使用原始文件名,或{{1选项:

name

1 个答案:

答案 0 :(得分:2)

唉!我们弄清楚出了什么问题......

请注意上面代码第一行中的单词downlaod?那是罪魁祸首。显然,糟糕的选择导致整个数组被忽略。我不确定这对未来是否会有所帮助,但我想我会把它留下来提醒一下CakePHP选项是这样工作的(在这种情况下至少是这样)。

PS:每当你被困住时,去散步然后回来!