springboot 文件上传
最近项目有一个接收 ios上传文件的需求,在这个过程中遇到了一个坑,我在项目中 接收不到 MultipartFile 里面的值最后让老大解决了 。。。 再次记录一下
用的gradle
jar配置文件:
compile fileTree(dir:'libs',include:['*.jar'])
compile("org.springframework.cloud:spring-cloud-starter-stream-kafka")
compile("org.springframework.cloud:spring-cloud-sleuth-zipkin-stream")
compile("org.springframework.cloud:spring-cloud-config-client")
compile("org.springframework.cloud:spring-cloud-starter-eureka")
compile("org.springframework.cloud:spring-cloud-starter-ribbon")
compile("commons-fileupload:commons-fileupload:1.3.1") // 就是少个这个jar包 但是 我不是很明白 它不是已经引入了 'org.apache.commons 这个么 为什么不一样呢
compile("org.springframework.cloud:spring-cloud-starter-feign")
compile("org.springframework.cloud:spring-cloud-starter-hystrix")
compile("org.springframework.boot:spring-boot-starter-cache")
compile("org.springframework.boot:spring-boot-starter-data-redis")
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("org.springframework.boot:spring-boot-starter-web")
compile group: 'commons-codec', name: 'commons-codec', version: '1.10'
compile group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3'
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.5'
compile group: 'joda-time', name: 'joda-time', version: '2.+'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '0.10.2.0'
compile group: 'org.apache.kafka', name: 'kafka_2.11', version: '0.10.2.0'
compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.4.9'
//compile group: 'com.auth0', name: 'java-jwt', version: '3.0.1'
//compile group: 'io.jsonwebtoken', name: 'jjwt', version: '0.6.0'
//compile group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '4.11'
//compile group: 'org.bitbucket.b_c', name: 'jose4j', version: '0.5.0'
compile group: 'org.apache.solr', name: 'solr-solrj', version: '6.3.0'
compile("javax.cache:cache-api")
compile("org.ehcache:ehcache:3.3.+")
然后 在springboot 启动类里面 加入
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
@EnableHystrix
@Configuration
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
//exclude表示自动配置时不包括Multipart配置
@ComponentScan
public class ApplicationAPI {
public static void main(String[] args) {
// 启动 华为音乐电台 api 服务 a a a
SpringApplication.run(ApplicationAPI.class, args);
}
//显示声明CommonsMultipartResolver为mutipartResolver
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
// resolver.setResolveLazily(true);//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setMaxInMemorySize(40960);
resolver.setMaxUploadSize(10*1024*1024);//上传文件大小 10M 10*1024*1024
return resolver;
}
配置一下Multipart就可以了
@RequestMapping(value = "/upload",method = RequestMethod.POST)
@ResponseBody
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
return "上传成功";
} else {
return "上传失败,因为文件是空的.";
}
}
这样 就完成了 还是比较 简单的 ,但是我看了好多博客 他们引用jar包的时候 都没有引用这个 准确的说 引用的很少 可能是和他们用jsp 有关?