[英]Spring Boot Multipart File Upload - Tips to Improve Performance
我将RESTful
API 暴露给用于将文件上传到数据库的reactjs
前端应用程序。
服务器端 Controller 代码:
@RequestMapping(value = "/api/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public UploadResponse uploadDocument(@RequestParam("doc") MultipartFile doc,
@RequestParam("metaData") String metaData, HttpServletResponse response) {
// logic to save in DB
return new UploadResponse();
}
客户端JS代码:
uploadDocument(formData, callback) {
instance.post('/api/upload', formData)
.then((response) => {
callback(response);
})
.catch((error) => {
const errorObj = {
status: error.response.status,
data: {
message: error.response.data.message,
},
};
callback(errorObj);
});
}
应用程序属性
spring.http.multipart.max-file-size=20MB
spring.http.multipart.max-request-size=20MB
我正在尝试上传 20MB 文件(CSV 或任何其他文件),到达 controller 端需要太多时间。 (~ 1-2 分钟)
请提出一些好的技术或技巧来提高使用相同的多部分请求的性能。 (例如:分块或压缩或流式传输)
我认为最简单的方法是在 javascript 端仅将 zip 内容上传给您 spring 引导应用程序。
反应js部分:请阅读从reactjs上传zip文件到nodejs
spring boot multipart octet stream handling - necessary classes, test mocks etc. are described at How to go from spring mvc multipartfile into zipinputstream
使用它,您应该能够在反应端获取 zip 内容,并在您的 spring 应用程序中使用它。
Or you just zip at react side and upload the file in a normal way without any special octet stream handling in spring boot but just using java zip package classes to unzip files.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.