用Jersey下载ZIP文件

时间:2016-07-05 12:06:05

标签: rest jersey

我有这个方法:

@GET
@Path("/download/{cptCodes}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadElectronicComponent(@QueryParam("cptCodes") List<String> codes);

我想创建一个ZIP文件,其中包含codes参数指定的一组文件。首先,我必须检索这些文档,然后创建一个ZIP文件。这个ZIP文件可能很大。

我读到了StreamingOutput,但我看到一些帖子只是返回一个文件。我想使用StreamingOutput会更好,但由于我不知道它是如何工作的,我不确定应该如何使用它。

1 个答案:

答案 0 :(得分:3)

StreamingOutput可以使用如下:

@GET
@Path("/download/{cptCodes}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadElectronicComponent(@QueryParam("cptCodes") List<String> codes) {

    StreamingOutput stream = new StreamingOutput() {

        @Override
        public void write(OutputStream os) throws IOException, WebApplicationException {
            // Generate your ZIP and write it to the OutputStream
        }
    };

    return Response.ok(stream).build();
}

有了它,您可以流式传输输出,即以一系列“块”发送数据。