【发布时间】:2019-03-13 21:09:52
【问题描述】:
我正在尝试为一个没有预算重新编写以将其升级到更现代的东西的客户恢复一个旧的 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,如果不会花费太长时间或导致太多问题,愿意考虑升级,但这是一个相当庞大的项目,所以我担心升级的后果,当它显然在工作时一点基于它的当前配置。
【问题讨论】:
-
你能先展示一下代码是如何生成图像的吗?还有,为什么要发送给客户的时候用
file_put_contents保存文件? -
file_put 仅供我调试,以检查图像是否有效。我可以得到代码,但不幸的是它在保存之前通过了大约 3 个控制器。简短的版本是有一个前端 web 控制器和一个后端 API,图像以二进制形式从前端传递到 API,在那里它被验证、调整大小并存储在磁盘上。我想重写,以便 API 直接提供实际图像,但没有重写预算。虽然 $imageData 变量在传递给 file_put 时会产生完美的图像,但是如果我 curl 请求 url,我会得到带有 LF 的图像。
-
其他控制器的响应是否也会产生额外的 LF 字节?
-
我必须仔细检查一下,所有其他响应都是 JSON,所以没关系。我发现仅仅创建一个空响应就会产生一个带有新行的响应。
-
这听起来绝对像是有人在你的项目中弄乱了 Symfony 核心代码。因为它已经很老了,我认为
vendor/*的内容已经提交到了 repo,对吧?如果是这样,请在您的 VCS 中检查您的团队是否修改了任何文件。
标签: php symfony symfony-2.1 symfony-http-foundation