我正在使用Cakephp 2.4。
我实际上可以使用以下代码强制下载每个请求的文件(由字符串创建):
$this->autoRender = false;
$this->response->body($file);
$this->response->download($log);
$this->response->send();
但是可以在一个请求中下载多个文件吗?当我将这段代码放在一个循环中时,Cake会创建一个包含不同文件内容的文件。
如果不是,是否可以使用Cake创建一个zip文件并将每个文件放入?
答案 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 强>