SpringBoot整合FastDFS实现图片的上传

简介:   文件的上传和预览在web开发领域是随处可见,存储的方式有很多,本文采用阿里巴巴余庆大神开发的FastDFS进行文件的存储,FastDFS是一个分布式文件存储系统,可以看我上一篇博文,有安装和配置教程。

文件的上传和预览在web开发领域是随处可见,存储的方式有很多,本文采用阿里巴巴余庆大神开发的FastDFS进行文件的存储,FastDFS是一个分布式文件存储系统,可以看我上一篇博文,有安装和配置教程。

  本文后台采用SpringBoot,前端采用Vue.js和Element UI,存储引擎为FastDFS。

  步骤:

1.maven项目引入FastDFS依赖


1         <dependency>
2             <groupId>com.github.tobato</groupId>
3             <artifactId>fastdfs-client</artifactId>
4             <version>1.26.7</version>
5         </dependency>    


2.配置yml


fdfs:
  so-timeout: 1501 #socket连接超时时长
  connect-timeout: 601 #连接tracker服务器超时时长
  thumb-image:  #缩略图的宽高,可选
    width: 60   
    height: 60
  tracker-list: ip地址:22122  #地址,支持多个(集群)

3.编写配置类


package com.steak.system.common.config;
import com.github.tobato.fastdfs.FdfsClientConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableMBeanExport;F
import org.springframework.context.annotation.Import;
import org.springframework.jmx.support.RegistrationPolicy;
@Configuration
@Import(FdfsClientConfig.class)#导入FastDFS-Client组件
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) #解决jmx重复注册bean的问public class FastClientImporter {
}

4.Controller层对图片进行处理,本项目前端通过Base64位将图片传到后台,后台解析和转码后,再上传到服务器


@Autowired    private FastFileStorageClient storageClient; //注入操作fastdfs的接口
     String filePath = "D://images//"; #图片存放的路径,这里我写成D盘
        String fileName = System.currentTimeMillis()+".jpg";  #文件名
        BASE64Decoder decoder = new BASE64Decoder(); 
        imgBase64 = imgBase64.replace("data:image/jpeg;base64,","");  #去除不需要的部分
        StorePath storePath = null;
        try {
            byte[] bytes = decoder.decodeBuffer(imgBase64); //转为图片
            for (int i = 0 ; i < bytes.length ; ++i){
                if (bytes[i] < 0){
                    bytes[i] += 256;
                }
            }
            String imageFilePath = filePath+fileName.replace("\\\\","/");
            OutputStream out = new FileOutputStream(imageFilePath);
            out.write(bytes);
            out.flush();
            out.close();
            File file = new File(imageFilePath);
            storePath = this.storageClient.uploadImageAndCrtThumbImage(new FileInputStream(file),file.length(),"jpg",null); //上传到FastDFS,这里也上传了缩略图,      }catch (Exception e){
        e.printStackTrace();  }
    String photoURL = serverPort+storePath.getFullPath();#将ip地址+端口+图片在FastDFS中的存储路径进行拼接就可以    大概就是这个样子了,哈哈,美女漂亮


对于FastDFS将图片存储在那:


存储在/var/fdfs/data下,下面有很多很多目录,像00,FF啊这样的,因为才开始使用,所以我就从第一个目录的第一条一直往里面走,随后找到了图片,60x60那个时缩略图

目录
相关文章
|
6天前
|
Java
springboot整合fastdfs、启动不成功
springboot整合fastdfs、启动不成功
29 0
|
6月前
|
存储 Java API
如何在Spring Boot应用程序中使用华为云的OBS云存储来上传和删除图片?
如何在Spring Boot应用程序中使用华为云的OBS云存储来上传和删除图片?
166 1
|
9月前
|
Java Maven
springboot项目--freemarker使用ftl模板文件动态生成图片
springboot项目--freemarker使用ftl模板文件动态生成图片
270 0
|
6天前
|
Java
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
SpringBoot配置图片访问404SpringBoot配置图片访问路径springboot如何访问图片
13 0
|
9月前
|
Java 文件存储 Spring
轻松实现Spring Boot与FastDFS的无缝整合
家人们啦!,上篇文章了,我们讲了如何使用docker-compose快速部署fastdfs,在今天的文章中,我将向大家介绍如何将Spring Boot与FastDFS进行无缝整合,以便高效地管理和操作文件存储。通过这个整合,你将能够轻松地在Spring Boot应用程序中实现文件的上传和下载等功能。让我们开始吧
121 0
轻松实现Spring Boot与FastDFS的无缝整合
|
6天前
|
缓存 NoSQL Java
springboot集成图片验证+redis缓存一步到位2
springboot集成图片验证+redis缓存一步到位2
|
6天前
|
缓存 NoSQL Java
springboot集成图片验证+redis缓存一步到位
springboot集成图片验证+redis缓存一步到位
|
6天前
|
Java 数据安全/隐私保护
SpringBoot【集成Thumbnailator】Google开源图片工具缩放+区域裁剪+水印+旋转+保持比例等(保姆级教程含源代码)
SpringBoot【集成Thumbnailator】Google开源图片工具缩放+区域裁剪+水印+旋转+保持比例等(保姆级教程含源代码)
89 0
|
6天前
|
Java Maven 数据安全/隐私保护
SpringBoot接口中如何直接返回图片数据
SpringBoot接口中如何直接返回图片数据
|
10月前
|
Java
springboot添加图片后访问404
今天springboot项目随意添加一张图片(只发现添加图片时访问不了,创建新的html也能马上访问,就是图片有毒!!!),
105 0