Symfony 2.1.11 图像数据响应在响应正文的开头添加附加字节

问题描述 投票:0回答:2

我正在尝试为一位客户恢复一个旧的 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,如果不会花费太长时间或导致太多问题,愿意考虑升级,但这是一个相当庞大的项目,所以我担心升级的后果,因为它显然在某一时刻工作基于其当前配置。

php symfony symfony-2.1 symfony-http-foundation
2个回答
0
投票

0A
是 LF 或
\r
字符,在 Windows 系统上是换行符(或者实际上:换行符)。

由于我不知道图像数据是如何生成的,所以我必须在这里做出假设:有时,当有人编辑 PHP 文件并在打开的 PHP 标记之前意外添加额外的换行符时,会弹出额外的 LF。但在这种情况下,一旦您尝试发送响应,您就会收到诸如

Headers already sent …
之类的警告。所以额外的线似乎以某种不同的方式潜入了
$imageData
。 [图像生成代码添加到问题后,我将立即更新这部分。]

一个肮脏的解决方法是在进一步处理之前从

0A
修剪
$imageData
,尽管我建议尝试找到将额外行添加到图像数据的位置并修复它。


0
投票

此问题与此处报告的问题相同:Corrupted ZipArchive after setContent() in php symfony 根本原因可能是标签之外的新行。

© www.soinside.com 2019 - 2024. All rights reserved.