- 前言
- 第一部分 基础应用开发
- 第 1 章 Spring Boot 入门
- 第 2 章 在 Spring Boot 中使用数据库
- 第 3 章 Spring Boot 界面设计
- 第 4 章 提高数据库访问性能
- 第 5 章 Spring Boot 安全设计
- 第二部分 分布式应用开发
- 第 6 章 Spring Boot SSO
- 第 7 章 使用分布式文件系统
- 第 8 章 云应用开发
- 第 9 章 构建高性能的服务平台
- 第三部分 核心技术源代码分析
- 第 10 章 Spring Boot 自动配置实现原理
- 第 11 章 Spring Boot 数据访问实现原理
- 第 12 章 微服务核心技术实现原理
- 附录 A 安装 Neo4j
- 附录 B 安装 MongoDB
- 附录 C 安装 Redis
- 附录 D 安装 RabbitMQ
- 结束语
7.2 FastFDS 客户端
FastDFS 有 Java 的客户端 API,可以实现文件的上传、下载和删除等操作。在实例中,将使用一个更加简单的由第三方提供的开源 FastFDS_Client 组件,更加轻量地使用 FastFDS 分布式文件系统的功能。FastFDS_Client 是由 tobato 提供的专门为 Spring Boot 应用编写的 FastFDS 客户端应用。需要了解更多有关 FastFDS_Client 的细节,可以从下列 URL 中查看或下载它的源代码。
https://github.com/tobato/FastDFS_Client.git
本章实例工程由以下两个模块组成:
数据库管理模块:neo4j;
Web 应用模块:webapp。
其中,数据库管理模块使用 Neo4j 数据库提供数据存取的功能,Web 应用模块提供文件的上传和管理等操作。
7.2.1 客户端配置
首先,在实例工程的 Web 应用模块中的 Maven 依赖管理中引用 FastFDS_Client 的依赖配置,如代码清单 7-4 所示。在工程的主程序中增加一个注解:@Import(FdfsClientConfig.class),以导入 FastFDS_Client 的配置。
代码清单 7-4 FastFDS_Client 依赖
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.25.1-RELEASE</version>
</dependency>
然后,在 Web 应用模块的工程配置文件 application.yml 中增加如代码清单 7-5 所示的配置。其中,trackerList 是配置 Tracker Server 的列表,因为只安装了一个 Tracker Server,所以只要配置一个即可。
代码清单 7-5 FastFDS_Client 配置
fdfs:
soTimeout: 1501
connectTimeout: 601
thumbImage:
width: 150
height: 150
trackerList:
- 192.168.1.214:22122
# - 192.168.1.215:22122
spring.jmx.enabled: false
7.2.2 客户端服务类
为了能使用 FastFDS_Client,需要编写一个调用 FastFDS_Client 的服务类 Fastefs-Client,如代码清单 7-6 所示。其中文件上传时调用了 FastFDS_Client 的 uploadFile,文件删除时调用了 FastFDS_Client 的 deleteFile。
代码清单 7-6 使用 FastFDS 上传和删除文件
@Service
public class FastefsClient {
@Autowired
protected FastFileStorageClient storageClient;
public String uploFile(MultipartFile file){
String fileType = FilenameUtils.getExtension(file.getOriginalFilename
()).toLowerCase();
StorePath path = null;
try {
path = storageClient.uploadFile(file.getInputStream(), file.get
Size(), fileType, null);
}catch (IOException e){
e.printStackTrace();
}
if(path != null)
return path.getFullPath();
else
return null;
}
public void deleteFile(String fullPath){
storageClient.deleteFile(fullPath);
}
}
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论