0

我的控制器中有以下代码:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$file = 'myfile.html';
$contentType = finfo_file($finfo, $file);
finfo_close($finfo);

$response = new Response();
$response->headers->set('Content-Description', 'File Transfer');
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment; filename='.basename($file));
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Expires', '0');
$response->headers->set('Cache-Control', 'must-revalidate');
$response->headers->set('Pragma', 'public');
$response->headers->set('Content-Length', filesize($file));

$response->setContent(file_get_contents($file));
$response->send();
return $response;

当我在我的开发计算机(带有 PHP 5.3.15 的 Mac)上运行此代码时,我得到了我想要的文件及其内容。但是当我在我的测试服务器(Ubuntu 12.04 和 PHP 5.3.10)上运行它时,我仍然得到文件,但内容加倍(我在一个文件中得到两倍的文件)。

我找到了一种方法让它使用$contentType = 'application/octet-stream'; 我做错了什么?

4

1 回答 1

2

我相信这两行做同样的事情(在 Symfony 中)

$response->send();
return $response;

我建议删除 $response->send() 行。

于 2012-12-25T18:16:25.537 回答