SpringBoot 集成 fastdfs-client-java 遇到的问题以及解决方案
云服务部署 fdfs
如果你是在阿里云服务器或者别的服务器上搭建的 fdfs,那么你想要访问到 fdfs 服务,storaged.conf 里面的 tracker_server 必须是外网地址,并且需要在安全组里面开放 8888 22122 23000 这些端口
multipart 的两种使用方式
springboot 在使用 multipart 的时候会出现冲突的问题,原因好像是 springboot 自带的 org.springframework.web.multipart.MultipartFile 和 Multipart 冲突导致前端传到后台的文件为 null,则需要在启动类注解
@SpringBootApplication
后加上(exclude = MultipartAutoConfiguration.class),意思就是跟他字面意思一样,排除 Multipart 的自动配置,选择使用另外的方法进行配置
- 老方法则是使用 commons 依赖的方法,创建 multipartResolver ,这里提供 SpringMVC 和 SpringBoot 两种案例
// SpringBoot @Configuration public class uploadConfig { @Bean(name="multipartResolver") public MultipartResolver multipartResolver() { return new CommonsMultipartResolver(); } }
可能出现的异常:BeanCreationException: Error creating bean with name 'multipartResolver'
解决方案:导包
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency>
- 使用 SpringBoot 自动集成的 MultipartFile
使用 MultipartFile 则不需要创建配置类,直接写控制类,并在对应形参上加上 @Requestpart
注解,不加好像也不会出问题(之前我没加是出现了 file 为 null 的情况,后来加上就好了,但是之后我把 @RequestPart 去掉之后又可以取到了),但建议加上
@PostMapping("/uploadFile") public String updloadFile(@RequestPart MultipartFile file, String name){ System.out.println(file); //System.out.println(name); String fileName = null; //文件上传 try { //fileName虚拟机的地址 fileName = FastDfsUtils.upload(file.getBytes(), FileUtils.getFileSuffix(file.getOriginalFilename())); System.out.println(domain + fileName); session.setAttribute("MyGirlFriend",domain+fileName); } catch (IOException e) { e.printStackTrace(); } return "mypic"; }a
最后附上源码,感兴趣的小伙伴可以看一下
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于