摘要:FastDFS是阿里开源的一个优秀的轻量级高性能的分布式文件存储系统,提供了核心的文件上传、下载、文件同步等功能,它是分布式架构下的文件存储,这就意味这个它可以应对分布式环境下的各种问题。
众所周知,程序猿很难有女朋友的,因为女生都喜欢撸猫,不喜欢撸代码的;
有女朋友的程序猿,又因为白天黑夜的加班,没有时间陪女朋友,整天和机器打交道,又缺少哄女朋友的天分,分手吧,分手吧。
夜深人静,程序猿面对Bug时,一脸痛苦时,也总会打开一个加密的文件夹,翻看着前女朋友的照片回忆下逝去青春;耳边单曲循环着那首歌 “ 怀念啊我们的青春啊,昨天在记忆里生根发芽,爱情滋养心中那片土地,绽放出美丽不舍的泪花 ” 。
虽然很怀念,但是现任女朋友发现了可怎么办?越想越觉得不安。
突然,天空划过一道闪电,猿小二突然站起来一拍猿脑(程序猿的脑袋),既然保存在在本地电脑上不安全,何不把这些照片都保存到云服务器(文件服务器)上呢,说干就干。
那么问题来了,这么多的图片服务器厂商,选择哪一个呢?听说,阿里开源了一个叫Fastdfs的文件系统很好用,于是抱着试试看看的心态,先来一个疗程的
文件服务器-FastDFS
开始之前,咱们还是先来了解下阿里的这个分布式文件系统是个啥东西,它是阿里开源的一个优秀的轻量级高性能的分布式文件存储系统,提供了核心的文件上传、下载、文件同步等功能;最重要的是它是分布式架构下的文件存储,这就意味这个它可以应对分布式环境下的各种问题,如:负载均衡等。
FastDFS 文件系统主要有三部分组成:
• Tracker Server(跟踪服务器):主要做调度工作,如:负载均衡。
• Storage Server(存储服务器):主要存储文件和文件属性相关信息
• Client(客户端):主要是调用文件服务器接口进行文件的上传、下载等操作
如果是仅仅用来存储前女朋友的照片,是有点大材小用了;不过鉴于此事,关系到程序猿的幸福生活,还是值得的
上传和前女友私密照片
了解了FastDFS之后,接下里我们就开始上传私密图片吧,在正式开始之前我们要先准备下环境,所谓“兵马未动,粮草先行”,咱么也得先来准备下文件服务器,由于这里安装文件服务器不是我们这里的重点,所以在这里具体步骤不在赘述,我这里是在Linux上安装的FastDFS(fastdfs的安装非常复杂),接下来就开始在SpringBoot中集成FastDFS
创建项目工程
首先按照咱么的惯例,先来使用Spring Initializr(当然别的方式也可以,主要是构建Maven工程)创建Spring Boot 基础工程
添加fastdfs客户端的依赖
<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.5</version> </dependency> |
添加fastdfs配置信息
在application.properties属性文件中添加fastdfs的相关配置信息
# fastDFS 配置 # 192.168.25.133是老师的虚拟机的ip fdfs.tracker-list=192.168.25.133:22122 |
创建fastdfs配置类
配置类需要应用启动的时候注册上传文件必要的类
/** * fastdfs文件上传的配置类 */ // 使用连接池的FastDFS @Import(FdfsClientConfig.class) // 解决jmx重复注册bean的问题 @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) @Configuration public class FileConfig { } |
测试结果
编写测试类,将图片上传到文件服务器
@SpringBootTest @RunWith(SpringJUnit4ClassRunner.class) public class DemoApplicationTests { @Autowired private FastFileStorageClient storageClient; /** * 文件上传服务器 */ @Test public void testUpload() throws FileNotFoundException { // 本地文件路径 File file = new File("D:\\Desktop\\xxxx\\110611110635b5f987b74e70c5.jpg"); // 上传图篇 StorePath storePath = storageClient.uploadFile( new FileInputStream(file), file.length(), "jpg", null); // 打印上传到服务器的图片路径 String imagePath = storePath.getFullPath(); System.out.println("图片在服务器路径:" + imagePath); } } |
运行结果,看到控制台返回一串路径,如下:group1/M00/00/00/wKgZhV5czHGAIJRXAAJthmwF-no493.jpg
这个就是图片被上传到文件服务器后返回的保存在服务器的路径
然后我们就可以在浏览器输入http://192.168.25.133/group1/M00/00/00/wKgZhV5czHGAIJRXAAJthmwF-no493.jpg 直接访问上传的图片,路径是:http://服务器ip + 服务器返回的图片路径,是不是很简单呢,以后有再多的女朋友也不用怕了,心中窃喜,哈哈哈...