Spring boot Spring boot大文件上传和下载支持
我有一个SpringBootWeb应用程序,它将处理大文件(最大5g大小)上传,然后将其保存到s3。请求和响应可能会持续很长时间Spring boot Spring boot大文件上传和下载支持,spring-boot,large-files,Spring Boot,Large Files,我有一个SpringBootWeb应用程序,它将处理大文件(最大5g大小)上传,然后将其保存到s3。请求和响应可能会持续很长时间 那么,像这样处理上传和下载的最佳实践是什么呢?如何在下载或上载大文件时提高性能以防止服务器停机?您可以使用多部分/表单数据 @RequestMapping(value = "/agency/create", method = RequestMethod.POST, consumes = "multipart/form-data") public Respon
那么,像这样处理上传和下载的最佳实践是什么呢?如何在下载或上载大文件时提高性能以防止服务器停机?您可以使用多部分/表单数据
@RequestMapping(value = "/agency/create", method = RequestMethod.POST, consumes = "multipart/form-data")
public ResponseEntity<List<String>> createAgency(
@RequestParam(value = "username", required = true) String username,
@RequestParam(value = "pic1", required = true)MultipartFile pic1File,
MultipartHttpServletRequest request, ModelAndView modelAndView) {
List<String> requestKeys=new ArrayList<String>();
List<String> originalFileName=new ArrayList<String>();
request.getFileNames().forEachRemaining(requestKeys::add);
for(String multipartFile:requestKeys) {
originalFileName.add(request.getFile(multipartFile).getOriginalFilename());
}
storageService.store(pic1File);
return new ResponseEntity<List<String>>(originalFileName, HttpStatus.CREATED);
}
@RequestMapping(value=“/agency/create”,method=RequestMethod.POST,consumes=“multipart/formdata”)
公共责任机构(
@RequestParam(value=“username”,required=true)字符串用户名,
@RequestParam(value=“pic1”,required=true)多部分文件pic1文件,
MultipartTTPServlet请求、模型和视图(模型和视图){
List requestKeys=new ArrayList();
List originalFileName=new ArrayList();
request.getFileNames().forEachRemaining(requestKeys::add);
for(字符串多部分文件:requestKeys){
add(request.getFile(multipartFile.getOriginalFilename());
}
storageService.store(pic1File);
返回新的ResponseEntity(原始文件名,HttpStatus.CREATED);
}
发布,以防将来有人发现这很有用。从Spring Boot 2.4.2开始,它与REST控制器一起工作
类注释:
@RestController
@RequestMapping("/api")
方法声明:
@RequestMapping(path = "/file-upload/{depot}/{fileName}", method = {RequestMethod.POST, RequestMethod.PUT})
public ResponseEntity<String> fileUpload(
@PathVariable(name = "depot") String depot,
@PathVariable(name = "fileName") String fileName,
InputStream inputStream,
HttpServletRequest request,
HttpServletResponse response)
@RequestMapping(path=“/file upload/{depot}/{fileName}”,method={RequestMethod.POST,RequestMethod.PUT})
公共响应文件上载(
@PathVariable(name=“depot”)字符串depot,
@PathVariable(name=“fileName”)字符串文件名,
InputStream InputStream,
HttpServletRequest请求,
HttpServletResponse(响应)
上面是一个REST控制器的Spring引导配置,它为我进行大文件上传工作。密钥是直接添加InputStream InputStream。我没有前端,它们都用作restful api。我将修改restful APIMultiPartFile的答案javadocs表示在多部分请求中收到的上传文件的表示形式。文件内容要么存储在内存中,要么临时存储在磁盘上。在这两种情况下,如果需要,用户负责将文件内容复制到会话级别或持久存储。临时存储将在请求处理结束时清除,因此这意味着文件首先上载到内存中,我认为要求是避免这种情况。