SpringBoot 整合 FastDFS 预防tmp系统文件找不到 MultipartFile 对象丢失

SpringBoot 整合 FastDFS 预防tmp系统文件找不到 MultipartFile 对象丢失

  • mavne依赖 这里用的是SpringBoot  2.0.6.RELEASE 选版本时一定要与其匹配
<!--fastDFS-->
<dependency>
   <groupId>com.github.tobato</groupId>
   <artifactId>fastdfs-client</artifactId>
   <version>1.26.6</version>
</dependency>
  • yml配置 (在config中会自动读取)
spring:
#################################   ---   file   ---   #################################
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
      location: /data/tmp
      enabled:  true


#################################   ---   fdfs   ---   #################################
fdfs:
  so-timeout: 1501
  connect-timeout:  2000
  thumb-image: # 缩略图
    width:  150
    height: 150
  tracker-list: # tracker地址
    - 11.53.56.70:22122
  pool:
    max-total:  100
    max-wait-millis:  60
  •  Configuration 配置 @Import(FdfsClientConfig.class) 会读取我们在yml中的配置
  • @Bean 中的配置是修改tmp临时文件路径,配合排除SpringBoot 默认读取MultipartFile配置 , 解决tmp文件找不到问题
import com.github.tobato.fastdfs.FdfsClientConfig;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.context.annotation.Import;
import org.springframework.jmx.support.RegistrationPolicy;

import javax.servlet.MultipartConfigElement;
import java.io.File;

/**
 * fastDFS Config By CHENYB date 2019-08-14
 */
@Configuration
@Import(FdfsClientConfig.class)//引入前辈封装的配置
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)//解决jmx重复注册bean的问题
public class FastDFSConfig {

    /**
     * 设置文件上传临时路径
     */
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        String location = System.getProperty("user.dir") + "/data/tmp";
        File tmpFile = new File(location);
        if (!tmpFile.exists()) {
            tmpFile.mkdirs();
        }
        factory.setLocation(location);
        return factory.createMultipartConfig();
    }
}
  •  启动类排除 MultipartAutoConfiguration 默认配置
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})

 如果需要开启线程,让然后tmp路径,系统文件找不到问题,需要将文件临时存储指定文件夹,上传钱,读取生成的临时文件,因为MultipartFile 流只允许使用一次,第二次使用时,只为null.所以会有以上问题,只需将MultipartFile流生成临时问价即可;

byte[]流与File互相转换: https://blog.csdn.net/scdncby/article/details/99736558

fastDFS 工具类: https://blog.csdn.net/scdncby/article/details/99738556

注:单线程,以上问题则没有这么复杂

chenyb 随笔记录,只为方便自己学习

2019-08-19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值