Отображение svg из сервлета с использованием background-image css - PullRequest
0 голосов
/ 03 мая 2018

У меня следующий фрагмент кода сервлета:

Blob blob = rs.getBlob("ICON");
byte[] bytes = blob.getBytes(1, (int)blob.length());
response.getOutputStream().write(bytes);
response.setContentType("image/svg+xml");

И фрагмент CSS: background-image: url(/IconData?type=get&iconId=6)

Изображение не отображается.

Если я установлю URL-адрес сервлета непосредственно в браузере, то svg будет отображаться правильно. В сетевой консоли Chrome я замечаю, что при доступе к сервлету в заголовке ответа не отправляется тип контента image / svg + xml.

Я что-то пропустил?

Я тестировал этот файл SVG, сохраненный в БД: usa.svg

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

вставить в свой HTML

    content:type="image/svg" inside <header> <img> or <svg> ie <svg    
    content:type="image/svg"> 
0 голосов
/ 03 мая 2018

Вероятно, слишком поздно устанавливать заголовок после записи данных в поток. Перед записью данных в поток необходимо установить заголовок Content-Type.

Документация setContentType гласит:

Устанавливает тип содержимого ответа, отправляемого клиенту, , если ответ еще не зафиксирован . [...] Этот метод не действует, если вызван после того, как ответ был зафиксирован.

(Акцент мой.)

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