【发布时间】:2013-05-30 06:31:54
【问题描述】:
在创建“强制下载”操作时,我发现控制器生成的所有响应都包括 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 块。
【问题讨论】:
-
你能告诉我们操作代码吗?
-
更新了答案以包含两个测试代码。
-
我昨天在这个答案中提供了几个解决方案建议(也就是查找 BOM 块、删除)。只是想回到那里检查......遗憾的是问题作者删除了问题......stackoverflow.com/questions/16719271/…
-
Errrr...对不起,nifr,那是我。决定删除该帖子,因为该问题不再反映实际问题。不确定这里的正确调用,我想我会把它链接回这里。问题依然存在。非常感谢您昨天的贡献。
-
因为这似乎是一个非常简单的 hello-world 应用程序,您能否上传项目(或相关部分),以便我可以检查我的设置是否出现 BOM 问题(并在文件中搜索 BOM用我的工具)?我还可以测试这里是否包含 bom,以便 Xsendfile 和 X-Accel 解决问题。
标签: symfony httpresponse byte-order-mark