spring-boot上传⽂件MultiPartFile获取不到⽂件问题解决
1.现象是在spring-boot⾥加⼊commons-fileupload jar并且配置了mutilPart的bean,在upload的POST请求后,发现
[java]
1. <bean id="multipartResolver" class="org.springframework.web.multipartmons.CommonsMultipartResolver">
2. <property name="maxUploadSize" value="104857600"/>
3. <property name="maxInMemorySize" value="4096"/>
4. </bean>
2.原因是:-boot⾃带的org.springframework.web.multipart.MultipartFile
和Multipart产⽣冲突,如果同时使⽤了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回f
alse.然后整个循环就跳出去了。整个问题产⽣的原因是Spring框架先调⽤了MultipartResolver 来处理http multi-part的请求。这⾥http multipart的请求已经消耗掉。后⾯⼜交给ServletFileUpload ,那么ServletFileUpload 就获取不到相应的multi-part请求。因此将multipartResolve配置去除,问题就解决了。
spring怎么读取jar文件3. 单⽂件的话只需要⼀个变量即,多⽂件上传的话就将MultipartFile改为数组,然后分别上传保存即可。
[java]
1. @RequestMapping(value="/multipleSave", method=RequestMethod.POST )
2. public @ResponseBody String multipleSave(@RequestParam("file") MultipartFile[] files){
3. String fileName = null;
4. String msg = "";
5. if (files != null && files.length >0) {
6. for(int i =0 ;i< files.length; i++){
7. try {
8. fileName = files[i].getOriginalFilename();
9. byte[] bytes = files[i].getBytes();
10. BufferedOutputStream buffStream =
11. new BufferedOutputStream(new FileOutputStream(new File("/tmp/" + fileName)));
12. buffStream.write(bytes);
13. buffStream.close();
14. msg += "You have successfully uploaded " + fileName";
15. } catch (Exception e) {
16. return "You failed to upload " + fileName + ": " + e.getMessage();
17. }
18. }
19. return msg;
20. } else {
21. return "Unable to upload. File is empty.";
22. }
23. }
24. }
4.spring-boot 配置上传⽂件和请求⽂件的最⼤值限制:
直接在application.properties中
multipart.maxFileSize=128KB
multipart.maxRequestSize=128KB
5. spring-boot-starter-web are already added as dependencies. To upload files with Servlet containers, you need to register
a MultipartConfigElement class (which would be <multipart-config> l). Thanks to Spring Boot, everything is auto-configured for you!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论