【问题标题】:Displaying svg from servlet using css's background-image使用 css 的背景图像从 servlet 显示 svg
【发布时间】:2018-10-13 05:09:36
【问题描述】:

我有以下 servlet 代码 sn-p:

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

还有css sn-p: background-image: url(/IconData?type=get&iconId=6)

图片未显示。

如果我直接在浏览器中设置 servlet URL,那么 svg 会正确显示。 我在 Chrome 网络控制台中注意到的一件事是,在访问 servlet 时,不会在响应标头中发送 image/svg+xml 内容类型。

我错过了什么吗?

我用这个保存到数据库中的 svg 文件进行了测试: usa.svg

【问题讨论】:

    标签: java html css servlets svg


    【解决方案1】:

    将数据写入流后,设置标头可能为时已晚。在将数据写入流之前,您需要设置 Content-Type 标头。

    setContentType documentation 部分表示:

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

    (强调我的。)

    【讨论】:

      【解决方案2】:

      粘贴到你的html中

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

      【讨论】:

        猜你喜欢
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 2019-02-27
        • 2015-02-18
        • 1970-01-01
        相关资源
        最近更新 更多