代码之家  ›  专栏  ›  技术社区  ›  manus

使用css的背景图像从servlet显示svg

  •  1
  • manus  · 技术社区  · 6 年前

    我有以下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时,图像/svg+xml内容类型不会发送到响应头中。

    我错过什么了吗?

    我使用保存到DB中的svg文件进行了测试: usa.svg

    2 回复  |  直到 6 年前
        1
  •  0
  •   David Conrad    6 年前

    一旦您将数据写入流,就很可能太晚才设置标头。在将数据写入流之前,需要设置内容类型标头。

    这个 setContentType documentation 部分地说:

    设置发送到客户端的响应的内容类型, 如果尚未提交响应 […]如果在提交响应后调用此方法,则此方法无效。

    (我的重点。)

        2
  •  0
  •   Ryan Stone    6 年前

    粘贴到html中

        content:type="image/svg" inside <header> <img> or <svg> ie <svg    
        content:type="image/svg">