3

我想从 Java 服务器(Restful Jax-rs)发送图像。我的客户是安卓。

@GET
public Response getUserImage() {
byte[] image =new byte[1024];
return Response.ok(image, MediaType.APPLICATION_OCTET_STREAM).header("content-attachment; filename=image_from_server.png") .build();

但是这里有一个下载框来了。所以我想在没有下载框的情况下下载,当我在浏览器上运行请求 URL 时,它应该会自动打开。谢谢。

4

2 回答 2

9

我相信那是因为你指定了application/octet-stream.

我认为你应该使用image/jpegor image/png

@GET
@Produces({"image/png"})
public Response getUserImage() {

    final byte[] image = ...;
    // say your image is png?

    return Response.ok().entity(new StreamingOutput(){
        @Override
        public void write(OutputStream output)
           throws IOException, WebApplicationException {
           output.write(image);
           output.flush();
        }
    }).build();
}
于 2012-06-26T15:58:41.913 回答
0

您可以使用 base 64 编码对图像进行编码,将 base 64 编码字符串包装在 xml 或 json 中,然后将其发送出去。在其余客户端上提取 base 64 编码字符串并对其进行解码以获得最终图像。这也保留了所有文件元数据,但唯一的缺点是图像大小增加了 30%。我已经尝试过使用 Restlet rest api,我很确定它也可以通过 JAX-RS。

于 2014-04-24T09:20:46.033 回答