在创建“强制下载”操作时,我发现控制器生成的所有响应都包括 UTF-8 BOM ()。这与常规页面无关,但对于下载的文件是不可取的,因为 JPG 或 ZIP 被报告为在几个 Windows 查看软件中已损坏。因此,主要目标是从控制器输出中删除 BOM。
到目前为止,我已经这样做了:
1-使用 Win Grep 在我网站上的每个文件上搜索 BOM 块。零结果。
2-在同一个 Web 服务器上创建一个非 symfony test.php 并检查客户端上的输出。那里没有 BOM。
有任何想法吗?
提前致谢, Z
更新:测试代码 1。生成的 JPG 包含 BOM。
public function downloadAction(Request $request){
$filename= 'test.jpg';
$response = new Response(file_get_contents($filename));
$response->headers->set('Content-Type',mime_content_type($filename));
$response->headers->set('Content-Disposition', 'attachment; filename="' . basename($filename) . '"');
return $response;
}
测试代码 2。生成的页面还包括 BOM。
public function downloadAction(Request $request){
echo 'hello world.';
exit;
}
UPDATE2:我刚试过这个:从头开始创建一个全新的 symfony2 项目,使用相同的 IDE 添加一个测试控制器/动作,然后猜猜是什么:没有 BOM ..所以,我的猜测是我的 symfony 站点内的某些东西正在拦截响应和添加 BOM 块。