我可以强制下载多个文件或zip文件吗?

时间:2014-06-18 10:17:50

标签: cakephp cakephp-2.4

我正在使用Cakephp 2.4。

我实际上可以使用以下代码强制下载每个请求的文件(由字符串创建):

$this->autoRender = false;
$this->response->body($file);
$this->response->download($log);
$this->response->send();

但是可以在一个请求中下载多个文件吗?当我将这段代码放在一个循环中时,Cake会创建一个包含不同文件内容的文件。

如果不是,是否可以使用Cake创建一个zip文件并将每个文件放入?

1 个答案:

答案 0 :(得分:3)

这是不可能的,因为HTTP协议和任何浏览器都不支持这样的东西,它不是CakePHP的东西。

如果您需要使用单个请求提供多个文件,那么您必须将它们放入某种存档中,但是它也不会与CakePHP直接相关,因为它不会发送有了ZIP库或类似的东西,它都是关于PHP的。

我认为现在还没有必要解释如何使用PHP压缩文件,因为这是在互联网的每个角落都有解释的。

将文件压缩后,请将压缩数据作为字符串传递给CakeResponse::body(),就像您已经在做的那样(不推荐用于大型档案,因为它会炸掉内存使用量) ,或者将ZIP文件临时存储在磁盘上并使用CakeResponse::file()

<强> http://book.cakephp.org/2.0/en/controllers/request-response.html#sending-files