java – Spring Boot分段上传获取空文件对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Boot分段上传获取空文件对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3167字,纯文字阅读大概需要5分钟。
内容图文
![java – Spring Boot分段上传获取空文件对象](/upload/InfoBanner/zyjiaocheng/796/e461cc7d7594439badde4fb9997a6014.jpg)
使用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();
}
>使用CommonsMultipartResolver v1.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.multipart
spring.http.multipart.enabled=true
spring.http.multipart.max-file-size=20Mb
spring.http.multipart.max-request-size=20Mb
我真的不知道从哪里开始寻找.这个问题偶尔会发生,每次启动服务器时都不会发生,但大部分时间都没有.希望有人可以帮助我.
谢谢.
解决方法:
我有同样的问题,这是我的解决方案:
在application.yml中:
spring:
http:
multipart:
enabled: false
在配置中:
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
...
@Bean
public MultipartResolver multipartResolver() {
return new CommonsMultipartResolver();
}
在RestController中:
@PostMapping(value = "api/upload", consumes = "multipart/form-data")
public void enablePurchase(@RequestHeader HttpHeaders headers,
FileBucketConversation fileBucketConversation) {
...
}
重要:
在您的客户端中,不要使用任何标头来定义Content-type或boundary.我正在使用Angular 4,当我从我的代码中删除这些标题时,它可以工作(我只设置用户标记):
/* DON'T USE THIS:
let boundary = "ABDCE";
headers.append("Content-type", "multipart/form-data;boundary=" + boundary);
headers.append("enctype", "multipart/form-data;boundary=" + boundary);
headers.append("boundary", boundary);
*/
我希望这对你有帮助.
内容总结
以上是互联网集市为您收集整理的java – Spring Boot分段上传获取空文件对象全部内容,希望文章能够帮你解决java – Spring Boot分段上传获取空文件对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。