我正在使用Jetty 9的HttpServletRequest#getPart(name)
实现,在继续之前,它似乎急切地处理整个请求(或者至少是Part
),即使生成的{{1}公开Part
方法。
getInputStream()
是否有办法立即返回,并将请求流式传输到生成的getPart
的{{1}}?
供参考,以下是我Part
实施的相关摘录:
InputStream
答案 0 :(得分:1)
这是邪恶乏味的,但可以使用MultipartStream中的commons-fileupload来完成:
try {
MultipartStream multipartStream = new MultipartStream(input, boundary);
boolean nextPart = multipartStream.skipPreamble();
OutputStream output;
while(nextPart) {
String header = multipartStream.readHeaders();
// process headers
// create some output stream
multipartStream.readBodyData(output);
nextPart = multipartStream.readBoundary();
}
} catch(MultipartStream.MalformedStreamException e) {
// the stream failed to follow required syntax
} catch(IOException e) {
// a read or write error occurred
}
这需要使用InputStream
中的HttpServletRequest#getInputStream()
,以及HTTP请求的内容类型中编码的边界定界符:
Content-Type: multipart/form-data; boundary=------------------------bd019839518ca918