分布式文件系统FastDFS
FastDFS — OSS 存储图片,视频等资源。
FastDFS 是什么?
分布式文件系统
a. 是由阿里巴巴的大牛余庆,使用C语言开发
b. 支持文件大小 4KB-500MB 之间
c. 使用者 京东,支付宝等
4.2 做什么?
存储图片,视频等资源。
4.3 怎么使用?
文件上传的时候,
文件上传需要注意的是什么?
a. 文件的名称不能重复。
b. 文件的后缀名与原有文件的后缀名保存一致
c. 需要注意文件上传的格式,大小等设置。
***文件上传流程:
client: 客户端,发起上传请求
tracker: 相当于路由 ,tracker 获取文件上传的所在位置!{在storage中获取ip,port}
storage: 真正的存储文件的!会自动生产一个文件Id,并且将文件写入磁盘!
返回文件上传的位置!
使用步骤:
- 下载fastDFS 依赖jar包
2. 编写一个配置文件tracker.conf 配置fastDFS 服务器地址
3. 编写代码
文件上传控制器:http://api.gmall.com/admin/product/fileUpload
4. 测试
重启service-product.
代码实现:
1.配置文件tracker.conf
#linux的连接和端口
tracker_server=192.168.200.128:22122
# 连接超时时间,针对socket套接字函数connect,默认为30秒
connect_timeout=30000
# 网络通讯超时时间,默认是60秒
network_timeout=60000
2.Controller层
@RestController
@RequestMapping("/admin/product")
public class FileUploadController {
// String ipAddr = http://192.168.200.128:8080/ 硬编码!
// 文件上传,必须指定文件的服务器地址
@Value("${fileServer.url}") // 叫软编码,将可能会发生变化的数据写在配置文件中,软编码!
private String fileUrl ; // fileUrl = http://192.168.200.128:8080/ 回显
// http://api.gmall.com/admin/product/fileUpload
// 利用springmvc 上传文件知识
// file 与后台管理系统页面对应
//http://api.gmall.com/admin/product/fileUpload
@RequestMapping("fileUpload")
public Result<String> fileUpload(MultipartFile file) throws Exception {
//读取配置文件
String configFile = this.getClass().getResource("/tracker.conf").getFile();
//声明一个返回路径的变量
String path = "";
if (null!= configFile){
//初始化
ClientGlobal.init(configFile);
//创建trackerClient客户端
TrackerClient trackerClient = new TrackerClient();
//用trackerClient获取连接
TrackerServer trackerServer = trackerClient.getConnection();
// 创建一个StorageClient1
StorageClient1 storageClient1 = new StorageClient1(trackerServer, null);
//调用上传方法
//第一个参数表示上传文件的子节数组,第二参数表示文件后缀名 zly.jpg
String extName = FilenameUtils.getExtension(file.getOriginalFilename());
//返回一个文件上传的路径 ,文件所在的路径
path = storageClient1.upload_appender_file1(file.getBytes(), extName, null);
System.out.println("上传文件之后返回的完整路径:\t"+fileUrl+path);
}
//返回文件路径
return Result.ok(fileUrl+path);
}
}