Symfony 2.1.11 Ответ с данными изображения, добавляющий дополнительный байт в начало тела ответа - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь воскресить старый проект 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 Ответ

0 голосов
/ 09 октября 2018

0A - это символ LF или \r, который является новой строкой (или, фактически, переводом строки) в системах Windows.

Поскольку я не знаю, как генерируются данные изображения, мне придется сделать здесь некоторые предположения: иногда всплывают дополнительные LF, когда кто-то редактирует файл PHP и добавляет дополнительную новую строку перед открытием PHPтег случайно.Но в этом случае вы получите предупреждение, например Headers already sent …, как только попытаетесь отправить ответ.Таким образом, дополнительная строка, похоже, пробралась в $imageData по-другому.[Я обновлю эту часть, как только к вопросу будет добавлен код генерации изображения.]

Грязный обходной путь - это отменить 0A от $imageData перед дальнейшей обработкой, хотя я бы порекомендовалпытаясь найти место, где добавляется дополнительная строка к данным изображения, и исправить это.

...