SpringBoot整合FastDFS详细版
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
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.21.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
</dependencies>
创建tracker.conf配置文件
tracker_server=192.168.253.128:22122
# 连接超时时间,针对socket套接字函数connect,默认为30秒
connect_timeout=30000
# 网络通讯超时时间,默认是60秒
network_timeout=60000
封装工具类
package com.xueqimiao.util;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public class PmsUploadUtil {
public static String uploadImage(MultipartFile multipartFile) {
//ip地址
String imgUrl = "http://192.168.253.128";
// 上传图片到服务器
// 配置fdfs的全局链接地址
String tracker = PmsUploadUtil.class.getResource("/tracker.conf").getPath();// 获得配置文件的路径
try {
ClientGlobal.init(tracker);
} catch (Exception e) {
e.printStackTrace();
}
TrackerClient trackerClient = new TrackerClient();
// 获得一个trackerServer的实例
TrackerServer trackerServer = null;
try {
trackerServer = trackerClient.getConnection();
} catch (IOException e) {
e.printStackTrace();
}
// 通过tracker获得一个Storage链接客户端
StorageClient storageClient = new StorageClient(trackerServer,null);
try {
byte[] bytes = multipartFile.getBytes();// 获得上传的二进制对象
// 获得文件后缀名
String originalFilename = multipartFile.getOriginalFilename();// a.jpg
System.out.println(originalFilename);
int i = originalFilename.lastIndexOf(".");
String extName = originalFilename.substring(i+1);
String[] uploadInfos = storageClient.upload_file(bytes, extName, null);
for (String uploadInfo : uploadInfos) {
imgUrl += "/"+uploadInfo;
}
} catch (Exception e) {
e.printStackTrace();
}
return imgUrl;
}
}
创建Controller
package com.xueqimiao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.xueqimiao.util.PmsUploadUtil;
@Controller
public class IndexController {
@RequestMapping("index")
public String index(){
return "index";
}
@RequestMapping(value="fileUpload",method=RequestMethod.POST)
@ResponseBody
public String fileUpload(@RequestParam("file") MultipartFile multipartFile) {
String url = PmsUploadUtil.uploadImage(multipartFile);
return url;
}
}
application.yml
server:
port: 8888
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
测试
启动项目运行 localhost:8888/index
上传之后会返回一个地址
将这个地址复制到浏览器访问
能看到图片就说明整合成功了.
附上git代码地址:https://github.com/xueqimiao/SpringBoot_FastDFS.git
下期再见。。。
还没有评论,来说两句吧...