[背景:Java 8,Spring Boot 1.5.1]
我们正在创建一个RESTful服务,需要能够上传大文件。我想要的是一个API,它应该长这个样子:
@RequestLine("POST /object")
@Headers("Content-Type: multipart/form-data")
void create(InputStreamResource resource, ...);
我不想使用MultipartFile
,因为这样会读取整个文件,也不想使用HttpServletRequest
,因为它似乎并不适合此处,而需要某种类型的HttpMessageConverter
。话虽如此,使用HttpServletRequest
可以按照以下方式解决问题。
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
FileItemStream e = iterator.next();
if (!e.isFormField()) {
InputStream inputStream = item.openStream();
//...
}
}
理想情况下,我希望有一个
InputStream
或者类似的东西来包装它,比如上面展示的InputStreamResource
。如果您有任何建议,将不胜感激。
HttpServletRequest
(或者MultipartFile
),例如ResponseEntity<Void> handleUploadLogs(final HttpServletRequest request)
,因为我想要一个干净的API,并且更希望有一个包装了它的InputStream
或POJO。 - user3971703HttpServletResponse
来写入其 OutputStream,我只需要返回一个ResponseEntity<Resource>
就可以流式传输所请求的对象。 - user3971703