我正在尝试为一个没有预算重写以将其升级到更现代的客户复活一个旧的Symfony 2.11项目。 其中一个路由在其响应中提供原始图像数据
$resp = new Response($imageData);
file_put_contents('./image.jpg', $imageData);
$resp->headers->set('Content-Type', $mime);
return $resp;
保存到image.jpg
的图像有效,打开并按预期工作,但在发出请求时响应返回相同的数据,但有一个额外的第一个字节 - 十六进制0A
字节 - 我如何防止添加这个额外的字节,因为它阻止浏览器渲染图像。
使用 Symfony 2.1.11,如果升级不会花费太长时间或导致太多问题,愿意考虑升级,但这是一个相当大的项目,所以我担心升级的后果,当它显然在某一点工作时基于它的当前配置。
0A
是LF或r
字符,即Windows系统上的换行符(或者实际上:换行符(。
由于我不知道图像数据是如何生成的,所以我必须在这里做出假设:有时,当有人编辑了一个 PHP 文件并在打开的 PHP 标签之前意外添加额外的换行符时,会弹出额外的 LF。但在这种情况下,一旦您尝试发送响应,您就会收到警告,例如Headers already sent …
。因此,额外的线路似乎以某种不同的方式潜入$imageData
。[一旦将图像生成代码添加到问题中,我将立即更新此部分。
一个肮脏的解决方法是在进一步处理之前从$imageData
中修剪0A
,尽管我建议尝试找到将额外行添加到图像数据中的位置并修复它。