【发布时间】:2015-03-25 17:30:50
【问题描述】:
我目前有 Jersey REST 代码来流式传输单个文件,效果很好:
StreamingOutput stream = new StreamingOutput() {
@Override
public void write(OutputStream out)
throws IOException {
final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out);
// Stream is filled with data in this method.
restDAO.readData(bufferedOutputStream);
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
};
return Response.ok(body, mimeType).header("filename", getFileName()).build();
但是,我想流式传输包含大文件和 JSON 的多部分文件,执行以下操作:
FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.bodyPart(jsonObject, MediaType.APPLICATION_JSON_TYPE);
String mimeType = "application/octet-stream";
StreamingOutput stream = new StreamingOutput() {
@Override
public void write(OutputStream out)
throws IOException {
final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out);
// Stream is filled with data in this method.
restDAO.readData(bufferedOutputStream);
bufferedOutputStream.flush();
bufferedOutputStream.close();
}
};
multiPart.bodyPart(stream, MediaTypeUtil.stringToMediaType(mimeType));
return Response.ok(multiPart, MediaType.MULTIPART_FORM_DATA).build();
但是,上面的代码不起作用。运行时出现此错误:javax.ws.rs.BadRequestException: HTTP 400 Bad Request
是否可以以类似的方式流式传输 multiPart?我看到的主要问题是进入多部分的文件来自流本身。
【问题讨论】:
标签: java json jersey streaming multipart