我有以下servlet代码片段:
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)
图像未显示。
如果我直接在浏览器中设置servlet URL,则会正确显示svg。 我在Chrome网络控制台中注意到的一件事是,访问servlet时,不会在响应头中发送image / svg + xml内容类型。
我错过了什么吗?
我测试了这个保存到DB的svg文件: usa.svg
答案 0 :(得分:0)
将数据写入流后,设置标头可能为时已晚。在将数据写入流之前,需要设置Content-Type标头。
setContentType
documentation部分说:
设置发送到客户端的响应的内容类型,如果响应尚未提交,则 。 [...]如果在提交响应后调用此方法,则此方法无效。
(强调我的。)
答案 1 :(得分:0)
粘贴到你的HTML
content:type="image/svg" inside <header> <img> or <svg> ie <svg
content:type="image/svg">