Symfony:强制下载生成的文件
问题描述:
我遇到了生成文件的问题。这里是我的行动:Symfony:强制下载生成的文件
<?php
public function exportAction()
{
$this->checkSecurity('EDIT');
$config = $this->getConfiguration();
$resource = $this->findOr404();
$style = $this->render($config->getTemplate('export.css'), array(
'resource' => $resource
));
$response = new Response();
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', 'plain/text');
$response->headers->set('Content-type', 'application/octet-stream');
$response->headers->set('Content-Disposition', 'attachment; filename="style-' . $resource->getSlug() . '.css";');
$response->sendHeaders();
$response->setContent($style);
return $response;
}
我的文件下载,但它的内容有开头:
HTTP/1.0 200 OK
Cache-Control: no-cache
Date: Tue, 02 Sep 2014 09:16:34 GMT
有谁知道为什么吗?
答
我不使用响应作为生成的文件下载的回报。
我只需填写然后一个变量它显示如下:
$style = $this->render($config->getTemplate('export.css'), array(
'resource' => $resource
));
header("Content-Type: text/calendar; filename='style-" . $resource->getSlug() . ".css'");
header('Content-Length: '.strlen($style);
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: inline; filename='style-" . $resource->getSlug() . ".css'");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo $style;
exit;
我知道这是不是绝对的物体侧的代码,但它完全适用于产生集成电路的千我们项目的一个内日常的文件
答
我终于找到了解决方案。我忘了的getContent()上渲染
<?php
public function exportAction()
{
$this->checkSecurity('EDIT');
$config = $this->getConfiguration();
$resource = $this->findOr404();
$style = $this->render($config->getTemplate('export.css'), array(
'resource' => $resource
));
$response = new Response();
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', 'plain/text');
$response->headers->set('Content-type', 'application/octet-stream');
$response->headers->set('Content-Disposition', 'attachment; filename="style-' . $resource->getSlug() . '.css";');
$response->sendHeaders();
$response->setContent($style->getContent());
return $response;
}
+0
我很高兴你终于找到了,我的方法也可以工作,但我认为$ style实际上是你的内容变量。 – 2014-09-02 14:35:05
可能重复:http://*.com/questions/13010411/symfony2-force-file-download?rq=1 – 2014-09-02 12:04:33
我想你的代码。该文件不下载。我仍然有“HTTP/1.0 200 OK缓存控制:无缓存日期:星期二,2014年9月02日14:19:10 GMT”显示在我的屏幕上之前的CSS代码我想下载 – 2014-09-02 14:20:54
我添加了$回应 - > sendHeaders()。现在该文件已成功下载,但我仍然有“HTTP/1.0 200 OK Cache-Control:no-cache Date:Wed,02 Sep 2014 14:22:02 GMT”开头... – 2014-09-02 14:23:55