【发布时间】:2017-08-01 15:28:25
【问题描述】:
我在使用 spring boot 1.5.2 实现多部分文件上传时遇到问题。
情况就是这样,我有一个映射来处理文件上传过程。当我启动spring服务器时,它启动时没有任何错误。问题是我要么能够完美上传文件,要么在 FileBucket 对象中的所有属性上获得 null。
如果我不关闭服务器,这种情况将永远存在。
- 如果它可以上传,它会在其余时间上传正常。
- 如果没有,在我重新启动服务器之前它不会工作(可能不止一个 时间)
这是映射。
@RequestMapping(value = {"/api/upload"}, method = RequestMethod.POST)
public ResponseEntity<Map<String, Integer>> upload(@Valid FileBucket fileBucket, BindingResult result) throws IOException {
Session session = sessionFactory.openSession();
User user = (User) session.load(User.class, getUserId());
Map<String, Integer> model = new HashMap<String, Integer>();
if (result.hasErrors()) {
System.out.println("validation errors");
System.out.println(result);
session.close();
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
} else {
int documentId = saveDocument(fileBucket, user);
model.put("documentId", documentId);
session.close();
return new ResponseEntity<Map<String, Integer>>(model, HttpStatus.OK);
}
}
还有FileBucket 对象
public class FileBucketConversation {
private MultipartFile file;
public MultipartFile getFile() {
return file;
}
public void setFile(MultipartFile file) {
this.file = file;
}
}
我尝试了几种方法来实现文件上传,但仍然存在相同的情况。
-
使用
StandardServletMultipartResolver。@Bean(name = "multipartResolver") public StandardServletMultipartResolver resolver() { return new StandardServletMultipartResolver(); } -
使用
CommonsMultipartResolverv1.3.2。@Bean(name="multipartResolver") public CommonsMultipartResolver multipartResolver () { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setMaxUploadSize(MAX_FILE_SIZE); return resolver; }覆盖
MultipartFilter@Bean @Order(0) public MultipartFilter multipartFile() { MultipartFilter multipartFilter = new MultipartFilter(); multipartFilter.setMultipartResolverBeanName("multipartResolver"); return multipartFilter; } -
在属性文件中启用
spring.http.multipartspring.http.multipart.enabled=true spring.http.multipart.max-file-size=20Mb spring.http.multipart.max-request-size=20Mb
我真的不知道从哪里开始寻找。这个问题偶尔会发生,不是每次我启动服务器时都会发生,但大多数时候都会发生。希望有人可以帮助我。
谢谢。
【问题讨论】:
-
如果你能解决这个问题,请分享..面临同样的问题
-
我一直在做一个不同的项目,我确实尝试了@Aleixs 的解决方案,但同时,我对服务器进行了巨大的修改,问题再也没有出现过。不确定这是否真的解决了问题。对于那个很抱歉。我关闭了默认的 multipartresolver 并改用 CommonMultipartResolver。
标签: java spring file-upload spring-boot