【问题标题】:Returning binary and text data in servlet response在 servlet 响应中返回二进制和文本数据
【发布时间】:2012-02-02 20:10:18
【问题描述】:

有没有人举例说明如何在单个 servlet 响应中同时发送二进制(图像)和基于文本的数据?一个例子是返回在服务器上生成的图像和图像映射。我也找不到用于执行此操作的混合模式 mime 类型。

想法?

【问题讨论】:

  • 您的目标客户是哪些?

标签: java servlets


【解决方案1】:

浏览器对多部分响应的支持仍然很冒险(阅读here)。但是,如果您打算自己解析客户端的响应,那么那里有一些很好的例子。您要查找的 mime 类型是 multipart/mixed

【讨论】:

    【解决方案2】:

    您可以使用Data URI 将二进制对象嵌入到生成的 HTML 中。 例如

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4/8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
    

    另见:https://serverfault.com/questions/241218/why-do-http-servers-not-send-a-single-file-back-when-possible#241224

    【讨论】:

    • 如果您的页面和所有嵌入对象不经常更改并且您正在使用压缩和缓存控制,那么您可以获得更大的加速。如果已更新,浏览器将只检查一项而不是多项。
    • 是的,你刚刚解释了为什么我说“可怕而可怕”,而不仅仅是可怕 :)
    【解决方案3】:

    这不是 HTTP 和 HTML 的工作方式。发出第一个请求以加载 HTML 代码。此 HTML 代码包含 &lt;img src="..."/&gt; 标记,它们指向图像的 URL。然后浏览器发出第二个请求以加载图像。您不能在一个请求中下载 HTML 和图像。

    【讨论】:

      【解决方案4】:

      许多 WAP 浏览器支持多部分响应,但我认为“常规”浏览器不支持。

      另见Browser support of multipart responses

      【讨论】:

        猜你喜欢
        • 2016-07-03
        • 2011-07-08
        • 1970-01-01
        • 2020-07-31
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        相关资源
        最近更新 更多