SpringBoot集成fastdfs-client-java遇到的问题以及解决方案

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的自动配置,选择使用另外的方法进行配置

  1. 老方法则是使用commons依赖的方法,创建 multipartResolver ,这里提供SpringMVC 和 SpringBoot 两种案例
<!-- SpringMVC -->
<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设定默认编码 -->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 设定文件上传的最大值为5MB,5*1024*1024 -->
    <property name="maxUploadSize" value="5242880"></property>
    <!-- 设定文件上传时写入内存的最大值,如果小于这个参数不会生成临时文件,默认为10240 -->
    <property name="maxInMemorySize" value="40960"></property>
    <!-- 上传文件的临时路径 -->
    <property name="uploadTempDir" value="fileUpload/temp"></property>
    <!-- 延迟文件解析 -->
    <property name="resolveLazily" value="true"/>
</bean>
// 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>
  1. 使用 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";
    }

最后附上源码,感兴趣的小伙伴可以看一下

https://github.com/VULCAN2019/multipart-demo

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值