Symfony 2.1.11 Image Data Response добавляет дополнительный байт в начало тела ответа
Я пытаюсь воскресить старый проект 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, мы хотим посмотреть на обновление, если оно не займет много времени или вызовет слишком много проблем, но это довольно масштабный проект, поэтому я боюсь последствий обновления, когда он, очевидно, работал в одной точке на основе на его текущей конфигурации.
1 ответ
0A
НЧ или \r
символ, который является новой строкой (или, фактически, переводом строки) в системах Windows.
Поскольку я не знаю, как генерируются данные изображения, мне придется сделать здесь некоторые предположения: иногда всплывают дополнительные LF, когда кто-то редактирует файл PHP и добавляет дополнительную новую строку перед открытием тега PHP случайно. Но в этом случае вы получите предупреждение, такое как Headers already sent …
как только вы попытаетесь отправить ответ. Таким образом, дополнительная линия, кажется, пробралась в $imageData
по-другому. [Я обновлю эту часть, как только код вопроса будет добавлен к вопросу.]
Грязный обходной путь был бы для того, чтобы 0A
от $imageData
перед дальнейшей обработкой, хотя я бы порекомендовал попытаться найти место, где добавляется дополнительная строка к данным изображения, и исправить это.