2012-01-28 106 views
0

我在布局文件中有以下内容;cakePHP强制下载文件

<?php 
$Filename = "TheEvent.vcs"; 
header("Content-Type: application/force-download"); 
header("Content-Disposition: inline; filename=$Filename"); 
echo $content_for_layout; 
?> 

现在在控制器中,我已经定义了这个布局,它正在工作,因为我可以看到我的文件的文本。唯一的问题是下载没有被强制在客户端上。

我也跟着下面的指南虽然我使用CakePHP 2.0

http://labs.iamkoa.net/2007/09/07/create-downloadable-ical-events-via-cake/

感谢

回答

1

您可以使用新的2.0要求的功能马上下载:

$this->response->download($filename); 

http://www.dereuromark.de/2011/11/21/serving-views-as-files-in-cake2/

您可以使用文件(),并提供文件服务的其他书面方式 - 看http://book.cakephp.org/2.0/en/controllers/request-response.html#cakeresponse

+0

完美。感谢您的答复。 – AshHimself 2012-01-28 14:10:03

+0

不知道为什么,但它显示''方法下载不存在'而$ $ - >响应 - >下载($文件名);'工作[很好](http://api.cakephp.org/2.0/类CakeResponse.html)。注意'request'替换为'response'。 – 2015-08-26 16:20:30

+0

@TheSexiestManinJamaica你说得对,我纠正了它。 – mark 2015-08-27 20:43:43

0

这是因为“内容类型:应用程序/力下载”被使用且不被HTTPd服务器识别。 因此,你的PHP脚本是一个未知类型的内容和浏览器得到了信号,下载文件并保存:)

0

接受的答案让我Method download does not exist

下面是我工作:

$this->response->download($filename); 

requestresponse取代。

来源:class-CakeResponse.html