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小时内删除。