springboot整合fastdfs

fastdfs介绍

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

springboot整合fastdfs

fastdfs的安装网上教程很多,可以参考,也可以直接去官网查看,这里只重点记录springboot如何整合fastdfs,以及一些具体的使用。

集成

  1. pom添加依赖,该版本截止当前日期最新,功能比较全面

            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>1.26.5</version>
            </dependency>
    
  2. 在springboot启动类添加如下,用于解决在SpringBoot项目当中JMX重复注册的问题
    @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)

  3. application.properties添加如下

    fdfs.so-timeout=1501
    fdfs.connect-timeout=601
    fdfs.thumb-image.width=150
    fdfs.thumb-image.height=150
    fdfs.web-server-url=ip:port/
    fdfs.tracker-list[0]=ip:port/
    

代码编写

上面我们引入的依赖已经帮我封装好了一个操作bean,我们直接注入即可使用,非常方便。

	@Autowired
    private FastFileStorageClient storageClient;

对于普通文件与图片文件的上传我们应该区分开来,图片文件我们可以直接生成缩略图,这在一些应用中是非常有必要的。

	@ApiOperation("上传除图片外的其他文件")
    @PostMapping
    public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
        Set<MetaData> metaDataSet = new HashSet<>();
        metaDataSet.add(new MetaData("Author", "Author"));
        metaDataSet.add(new MetaData("date", "当前时间"));
        StorePath path = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),
                metaDataSet);
        return path.getFullPath();
    }

    @ApiOperation("上传图片文件")
    @PostMapping("img")
    public String uploadImageAndCrtThumbImage(@RequestParam("file") MultipartFile file) throws IOException {
        Set<MetaData> metaDataSet = new HashSet<>();
        metaDataSet.add(new MetaData("Author", "Author"));
        metaDataSet.add(new MetaData("date", "当前时间"));
        StorePath path = storageClient.uploadImageAndCrtThumbImage(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),
                metaDataSet);
        return path.getFullPath();
    }

缩略图会根据application.properties中的配置比例自动生成,当然也可以根据业务手动设置比例进行生成,具体可以看下源码中的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值