我有这个方法:
@GET
@Path("/download/{cptCodes}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response downloadElectronicComponent(@QueryParam("cptCodes") List<String> codes);
我想创建一个ZIP文件,其中包含codes
参数指定的一组文件。首先,我必须检索这些文档,然后创建一个ZIP文件。这个ZIP文件可能很大。
我读到了StreamingOutput
,但我看到一些帖子只是返回一个文件。我想使用StreamingOutput
会更好,但由于我不知道它是如何工作的,我不确定应该如何使用它。
答案 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();
}
有了它,您可以流式传输输出,即以一系列“块”发送数据。