Day08 [学成在线]课程图片管理&FastDFS
程序员文章站
2022-06-13 12:31:28
...
执行流程如下:
- 管理员进入教学管理前端,点击上传图片
- 图片上传至文件系统服务,文件系统请求fastDFS上传文件
- 文件系统将文件入库,存储到文件系统服务数据库中。
- 文件系统服务向前端返回文件上传结果,如果成功则包括文件的Url路径。
- 课程管理前端请求课程管理进行保存课程图片信息到课程数据库。
- 课程管理服务将课程图片保存在课程数据库。
在centos7安装FastDFS具体方法:FastDFS安装教程。笔者一次成功,以前用其他方法失败三次。
安装完成后先进行测试,需在maven中导入主要依赖
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
// 加载配置文件
ClientGlobal.initByProperties("config/fastdfs-client.properties");
// 获取踪迹服务器客户端, 从而根据踪迹客户端来获取服务器
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
// 获取storageClient
StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
// 上传文件
String filePath = "D:\\JAVA\\Java_Learning\\IDEA_Project02\\xcEdu\\a.jpg";
// 上传成功后拿到文件id
String fileId = storageClient1.upload_appender_file1(filePath, "jpg", null);
System.out.println(fileId);
通过debug获取fileId后在linux中根据路径便可在fast_storage/data
下查找到刚上传的图片
文件下载测试
String fileId = "group1/M00/00/00/wKiJhF7cqomEFzLfAAAAAJm7pfE595.jpg";
byte[] bytes = storageClient1.download_file1(fileId);
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\JAVA\\Java_Learning\\IDEA_Project02\\xcEdu\\b.jpg"));
fileOutputStream.write(bytes);
其中fileIdgroup1/M00/00/00/wKiJhF7cqomEFzLfAAAAAJm7pfE595.jpg
可以通过浏览器直接访问,前面加上虚拟机ip地址即可。
也可在 C:\Windows\System32\drivers\etc\
下的hosts修改访问域名
关于 FastDFS-nginx-module
模块的作用:
在 storage server 上安装 nginx 的目的是对外通过 http 访问 storage server 上的文 件。使用 nginx 的模块
FastDFS-nginx-module 的作用是通过 http 方式访问 storage 中 的文件,当 storage 本机没有要找的文件时向源
storage 主机代理请求文件。
答:一旦其他服务上传文件,例如课程管理服务上传文件,那么文件Id 和课程管理服务的课程 Id 会关联在一起,并保存到课程服务的数据库中。即文件系统服务只存放文件Id, 相当于文件在FastDFS中的地址。
其他服务使用文件系统服务同样如此。
- 即每次上传文件,需要做两件事:
- 1.将文件Id 保存到文件系统数据库,作为文件在FastDFS中的地址
- 2.哪个服务调用文件系统服务,该服务将从文件系统获取到的文件Id 和自己服务对象的 Id 绑定关联后,保存到该服务的数据库。
上一篇: .NET C#三层开发结构Demo详解及源码(二)
下一篇: php递归删除目录与文件的方法_PHP