我正试图为一个没有预算进行重新编写以将其升级到更现代的客户的客户恢复一个旧的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,愿意花时间进行升级,以免花费太长时间或导致太多问题,但这是一个相当大的项目,因此我担心升级显然会在不起作用的情况下进行升级基于它的当前配置的一点。
答案 0 :(得分:0)
0A
是LF或\r
字符,在Windows系统上是换行符(或实际上是换行符)。
由于我不知道图像数据是如何生成的,因此我必须在这里进行假设:有时,当有人编辑了PHP文件并在意外打开PHP标记之前添加了额外的换行符时,会弹出额外的LF。 。但是在这种情况下,您尝试发送响应时会收到诸如Headers already sent …
之类的警告。因此,多余的行似乎以某种不同的方式插入了$imageData
中。 [将图像生成代码添加到问题后,我将立即更新此部分。]
一个肮脏的解决方法是在进一步处理之前从0A
提取$imageData
,尽管我建议尝试查找将多余的行添加到图像数据中的位置并进行修复。 / p>