大咖分享

一招教你如何存储和前女友的私密照片
北大青鸟总部

摘要: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

这个就是图片被上传到文件服务器后返回的保存在服务器的路径



然后我们就可以在浏览器输入192.168.25.133/group1/M 直接访问上传的图片,路径是:http://服务器ip + 服务器返回的图片路径,是不是很简单呢,以后有再多的女朋友也不用怕了,心中窃喜,哈哈哈...


相关阅读
戏说中台,一切都是最好的安排!
分布式事务那些事儿
收藏!分布式消息队列的避坑指南!
​终于有一篇文章把“事务”讲清楚了!
恶补分布式事务
热门推荐