Spring实现FastDFS客户端
Spring客户端实现FastDFS系统文件的上传、下载和预览
引入依赖
1 | // https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java |
application.properties
1 | #################### FastDFS-Client Start #################### |
项目结构
ErrorCode
1 | package com.demo.client; |
FastDFSClient
1 | package com.demo.client; |
FastDFSException
1 | package com.demo.client; |
FileCheck
1 | package com.demo.client; |
FileResponseData
1 | package com.demo.client; |
TrackerServerFactory
1 | package com.demo.client; |
TrackerServerPool
1 | package com.demo.client; |
FileObjectController
1 | package com.demo.controller; |
测试
增加权限控制
FastDFS的权限控制是在服务端开启token验证,客户端根据文件名、当前unix时间戳、秘钥获取token,在地址中带上token参数即可通过http方式访问文件。
说明:如果系统文件隐私性较高,可以直接通过fastdfs-client提供的API去访问即可,不用再配置Nginx走http访问。配置Nginx主要是为了快速访问服务器的文件。
服务端开启token验证
1 | # 修改http.conf |
重启服务
1 | service fdfs_trackerd restart |
配置客户端
客户端只需要设置如下两个参数即可,两边的密钥保持一致。
1 | # token 防盗链功能 |
修改FileObjectController
1 | public FileResponseData uploadSample(MultipartFile file, HttpServletRequest request) { |
测试
注意
- 确认调用token生成函数(ProtoCommon.getToken),传递的文件ID中没有包含group name。传递的文件ID格式形如:M00/00/00/wKgzgFnkTPyAIAUGAAEoRmXZPp876.jpeg。
- 确认服务器时间基本是一致的,注意服务器时间不能相差太多,不要相差到分钟级别。