我的控制器中有以下代码:
$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';
我做错了什么?