SpringBoot整合FastDFS详细版

ゝ一纸荒年。 2023-06-16 13:52 214阅读 0赞

SpringBoot整合FastDFS

        • 引言
        • 下载FastDFS
        • 导入FastDFS工程到IDEA
            • 安装到maven仓库
        • 创建springboot工程进行整合
            • pom.xml
            • 创建tracker.conf配置文件
            • 封装工具类
            • 创建Controller
            • application.yml
            • index.jsp
            • 测试

引言

接上一篇 Linux下玩转FastDFS

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

下载FastDFS

通过git下载fdfs的客户端,因为maven仓库里是没有这个包的,要自行下载
https://github.com/happyfish100/fastdfs-client-java
cmd窗口 git clone https://github.com/happyfish100/fastdfs-client-java

在这里插入图片描述

导入FastDFS工程到IDEA

在这里插入图片描述

安装到maven仓库

在这里插入图片描述

创建springboot工程进行整合

pom.xml
  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.5.21.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter</artifactId>
  14. </dependency>
  15. <!--tomcat-->
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-tomcat</artifactId>
  19. <scope>provided</scope>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.apache.tomcat.embed</groupId>
  23. <artifactId>tomcat-embed-jasper</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.csource</groupId>
  27. <artifactId>fastdfs-client-java</artifactId>
  28. <version>1.27-SNAPSHOT</version>
  29. </dependency>
  30. </dependencies>
创建tracker.conf配置文件
  1. tracker_server=192.168.253.128:22122
  2. # 连接超时时间,针对socket套接字函数connect,默认为30秒
  3. connect_timeout=30000
  4. # 网络通讯超时时间,默认是60秒
  5. network_timeout=60000
封装工具类
  1. package com.xueqimiao.util;
  2. import org.csource.fastdfs.ClientGlobal;
  3. import org.csource.fastdfs.StorageClient;
  4. import org.csource.fastdfs.TrackerClient;
  5. import org.csource.fastdfs.TrackerServer;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import java.io.IOException;
  8. public class PmsUploadUtil {
  9. public static String uploadImage(MultipartFile multipartFile) {
  10. //ip地址
  11. String imgUrl = "http://192.168.253.128";
  12. // 上传图片到服务器
  13. // 配置fdfs的全局链接地址
  14. String tracker = PmsUploadUtil.class.getResource("/tracker.conf").getPath();// 获得配置文件的路径
  15. try {
  16. ClientGlobal.init(tracker);
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. TrackerClient trackerClient = new TrackerClient();
  21. // 获得一个trackerServer的实例
  22. TrackerServer trackerServer = null;
  23. try {
  24. trackerServer = trackerClient.getConnection();
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. // 通过tracker获得一个Storage链接客户端
  29. StorageClient storageClient = new StorageClient(trackerServer,null);
  30. try {
  31. byte[] bytes = multipartFile.getBytes();// 获得上传的二进制对象
  32. // 获得文件后缀名
  33. String originalFilename = multipartFile.getOriginalFilename();// a.jpg
  34. System.out.println(originalFilename);
  35. int i = originalFilename.lastIndexOf(".");
  36. String extName = originalFilename.substring(i+1);
  37. String[] uploadInfos = storageClient.upload_file(bytes, extName, null);
  38. for (String uploadInfo : uploadInfos) {
  39. imgUrl += "/"+uploadInfo;
  40. }
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. return imgUrl;
  45. }
  46. }
创建Controller
  1. package com.xueqimiao.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RequestParam;
  6. import org.springframework.web.bind.annotation.ResponseBody;
  7. import org.springframework.web.multipart.MultipartFile;
  8. import com.xueqimiao.util.PmsUploadUtil;
  9. @Controller
  10. public class IndexController {
  11. @RequestMapping("index")
  12. public String index(){
  13. return "index";
  14. }
  15. @RequestMapping(value="fileUpload",method=RequestMethod.POST)
  16. @ResponseBody
  17. public String fileUpload(@RequestParam("file") MultipartFile multipartFile) {
  18. String url = PmsUploadUtil.uploadImage(multipartFile);
  19. return url;
  20. }
  21. }
application.yml
  1. server:
  2. port: 8888
  3. spring:
  4. mvc:
  5. view:
  6. prefix: /WEB-INF/jsp/
  7. suffix: .jsp
index.jsp
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <form action="fileUpload" method="post" enctype="multipart/form-data">
  8. <input type="file" name="file">
  9. <input type="submit" value="上传">
  10. </form>
  11. </body>
  12. </html>
测试

启动项目运行 localhost:8888/index
在这里插入图片描述

上传之后会返回一个地址在这里插入图片描述
将这个地址复制到浏览器访问
在这里插入图片描述
能看到图片就说明整合成功了.
附上git代码地址:https://github.com/xueqimiao/SpringBoot_FastDFS.git

下期再见。。。

发表评论

表情:
评论列表 (有 0 条评论,214人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springboot整合fastdfs

    在项目开发中经常会碰到做文件上传的功能,一般来说,文件上传的步骤就那么几步,前台通过提交一个选中的文件,后端对文件做处理然后将文件上传至指定的地址,这个地址是一个真实的物理存储