Браузеры многократно вставляют '# 10;' в строке base64 на каждой новой строке? - PullRequest
0 голосов
/ 17 января 2019

Я хочу показать в браузере уже полученные изображения jpg, закодированные как Base64. 1. Поэтому я загружаю изображения jpg в свой бэкэнд. 2. Затем я хочу показать загруженное изображение в браузере.

В Safari он работает правильно, и у меня есть следующие проверки:

src="data:image/jpeg;base64,_9j_4AAQSkZJRgABAQAAAQABAAD_2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH... 

Но в любом другом браузере я не вижу того же изображения из-за того, что другой тег base64 имеет повторяющиеся вхождения #10; между base64 как:

src="data:image/jpeg;base64,_9j_4AAQSkZJRgABAQAAAQABAAD_2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH_2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQE...

Таким образом, другие браузеры, очевидно, вставляют #10; везде, где начинается новая строка ..

Я делаю загрузку со смартфонов Android и кодирую в base64 через:

Base64.encodeToString(jpgStream.toByteArray(), Base64.URL_SAFE);

Как я могу это исправить? Связан ли этот бэкэнд с браузером или даже с Android-клиентом?

1 Ответ

0 голосов
/ 17 января 2019

Я думаю, что-то кодирует ваши \n в 
 на стороне сервера, и Safari удаляет его снова, а не другие браузеры, добавляющие его.

Этот HTML отлично работает в chrome для меня (сохраните его в файле с именем a.html на рабочем столе и откройте его):

<html><body><img src="data:image/png;base64, iVBORw0KGgoAAAAN
  SUhEUgAAAAUA
  AAAFCAYAAACNbyblAA
  AAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
  9TXL0Y4OHwAAAABJRU5ErkJggg=="></img></body></html>

Я думаю, что вам может понадобиться добавить больше кода в ваш вопрос, показывающий, как вы извлекаете данные, делаете их base64, включаете их в страницу, отправляемую в браузер и т. Д.

Кроме того, посмотрите на необработанные ответы с вашего сервера, в инструментах разработчика браузера или через прокси-сервер отладки, такой как Fiddler, чтобы точно узнать, что отправляет ваш сервер - использование Inspect Element может показывать вам данные после их анализа / интерпретируется / отображается, а не в необработанном виде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...