当前位置:网站首页>FastDfs的快速入门,三分钟带你上传下载文件到云服务器
FastDfs的快速入门,三分钟带你上传下载文件到云服务器
2022-07-04 20:08:00 【掉头发的王富贵】
前提条件,linux安装fastdfs,如果没有安装的话请查看博主上一篇文章进行安装,否则无法进行下去。
https://blog.csdn.net/csdnerM/article/details/125179633
第一步,下载源文件
下载地址:https://codeload.github.com/happyfish100/fastdfs-client-java/zip/master
解压之后他是一个源文件,所以需要大家进行打包成一个jar包并且在自己的maven仓库去引用。
第二步,maven项目中引用
打包之后我们看到版本是1.29-SNAPSHOT
,所以我们在maven中引入:
第三步,编写fastdfs.conf文件:
tracker_server=127.0.0.1:22122
此处填写自己服务器的ip和fastdfs的端口
第四步,编写工具类,实现上传功能
public static void upload() {
TrackerServer ts = null;
StorageServer ss = null;
StorageClient sc = null;
try {
//加载配置文件,目的是为了获取所有的TrackerServer的地址信息
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getTrackerServer();
ss = tc.getStoreStorage(ts);
//创建Storage的客户端对象,需要利用这个对象来操作FastDFS,实现文件的上传下载和删除
sc = new StorageClient(ts, ss);
//上传文件到FastDFS
//参数 1 为需要上传的文件在本地磁盘的绝对路径
//参数 2 为需要上传的文件的扩展名
//参数 3 为需要上传的文件的属性文件通常为null不上传,这些文件的属性例如文件大小以及类型等信息通常需要记录到数据库中
//返回一个字符串数组,这个数组中的数据非常重要必须要妥善保管
//注意:这个数组中的第一个元素为文件所在的FastDFS的组名,第二个元素为文件在FastDFS中的远程文件名称
// 这两个数据通常我们是需要写入到数据库中的
String[] result = sc.upload_file("/Users/wangfugui/Downloads/20220529151321.png", "png", null);
for (String str : result) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
if (sc != null) {
try {
sc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
第五步,编写下载方法
public static void download() {
TrackerServer ts = null;
StorageServer ss = null;
StorageClient sc = null;
try {
//加载配置文件,目的是为了获取所有的TrackerServer的地址信息
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getTrackerServer();
ss = tc.getStoreStorage(ts);
//创建Storage的客户端对象,需要利用这个对象来操作FastDFS,实现文件的上传下载和删除
sc = new StorageClient(ts, ss);
int downloadFile = sc.download_file("group1", "M00/00/00/rBJzqmKgR4OACNHEABeAcCmFn1g961.png", "/Users/wangfugui/Downloads/ss.png");
System.out.println(downloadFile);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
try {
if (sc != null) {
sc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
第六步,编写删除方法
public static void delete() {
TrackerServer ts = null;
StorageServer ss = null;
StorageClient sc = null;
try {
//加载配置文件,目的是为了获取所有的TrackerServer的地址信息
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getTrackerServer();
ss = tc.getStoreStorage(ts);
//创建Storage的客户端对象,需要利用这个对象来操作FastDFS,实现文件的上传下载和删除
sc = new StorageClient(ts, ss);
int deleteFile = sc.delete_file("group1", "M00/00/00/rBJzqmKgR4OACNHEABeAcCmFn1g961.png");
System.out.println(deleteFile);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
try {
if (sc != null) {
sc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
第七步,编写main方法进行测试
上传之后返回一个数组,里面的东西长这样:
group1
M00/00/00/rBJzqmKgR4OACNHEABeAcCmFn1g961.png
我们去/00/00/文件夹里面看一下:
删除方法,传入组名称和文件路径,就会发现服务器里面的文件删除了,
下载方法传入组名称和文件路径和本地路径,就可以发现下载成功:
仓库地址:
边栏推荐
- How does the computer save web pages to the desktop for use
- Advantages of RFID warehouse management system solution
- 企业数字化转型最佳实践案例:基于云的数字化平台系统安全措施简介与参考
- LeetCode 7. Integer inversion
- [1200. Différence absolue minimale]
- 记一次重复造轮子(Obsidian 插件设置说明汉化)
- 语义化标签的优势和块级行内元素
- 科普达人丨一文看懂阿里云的秘密武器“神龙架构”
- heatmap.js图片热点热力图插件
- hash 表的概念及应用
猜你喜欢
[server data recovery] a case of RAID5 data recovery stored in a brand of server
《动手学深度学习》(三) -- 卷积神经网络 CNN
TweenMax表情按钮js特效
福昕PDF编辑器v10.1.8绿色版
The concept and application of hash table
【服务器数据恢复】某品牌服务器存储raid5数据恢复案例
See how Tencent does interface automation testing
How to solve the problem that win11 cannot write the value to the registry key?
【1200. 最小绝对差】
剑指 Offer II 80-100(持续更新)
随机推荐
[server data recovery] a case of RAID5 data recovery stored in a brand of server
记一次重复造轮子(Obsidian 插件设置说明汉化)
[1200. Minimum absolute difference]
Jmeter 之压测入门
卷积神经网络在深度学习中新发展的5篇论文推荐
Common verification rules of form components -1 (continuously updating ~)
acwing 3302. 表达式求值
nmap扫描
LeetCode 8. String conversion integer (ATOI)
Play the music of youth
See how Tencent does interface automation testing
LeetCode 8. 字符串转换整数 (atoi)
奏响青春的乐章
嵌入式TC 测试用例
idea配置标准注释
工厂从自动化到数字孪生,图扑能干什么?
Gobang go to work fishing tools can be LAN / man-machine
Go notes (3) usage of go language FMT package
记一次重复造轮子(Obsidian 插件设置说明汉化)
看腾讯大老如何做接口自动化测试