当前位置:网站首页>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/文件夹里面看一下:
删除方法,传入组名称和文件路径,就会发现服务器里面的文件删除了,
下载方法传入组名称和文件路径和本地路径,就可以发现下载成功:
仓库地址:
边栏推荐
- [observation] Lenovo: 3x (1+n) smart office solution, releasing the "multiplier effect" of office productivity
- 【观察】联想:3X(1+N)智慧办公解决方案,释放办公生产力“乘数效应”
- [server data recovery] a case of RAID5 data recovery stored in a brand of server
- 企业数字化转型最佳实践案例:基于云的数字化平台系统安全措施简介与参考
- Ten years' experience of byte test engineer directly hits the pain point of UI automation test
- VIM asynchronous problem
- idea大小写快捷键
- How does wincc7.5 SP1 find variables and their positions through cross indexing?
- 接口设计时的一些建议
- render函数与虚拟dom
猜你喜欢
What are the functional modules of RFID warehouse management system solution
NetWare r7000 Merlin system virtual memory creation failed, prompting that the USB disk reading and writing speed does not meet the requirements. Solution, is it necessary to create virtual memory??
测试员的算法面试题-找众数
哈希表、哈希函数、布隆过滤器、一致性哈希
From automation to digital twins, what can Tupo do?
Foxit pdf editor v10.1.8 green version
TweenMax表情按钮js特效
网件r7000梅林系统5g不稳定 5g信号经常掉线解决方法
Qt五子棋人机对战画棋子之QPainter的使用误区总结
Flet tutorial 06 basic introduction to textbutton (tutorial includes source code)
随机推荐
卷积神经网络在深度学习中新发展的5篇论文推荐
GVM use
Quelques suggestions pour la conception de l'interface
伦敦银走势图分析的新方法
【1200. 最小绝对差】
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
分析伦敦银走势图的技巧
二叉树的四种遍历方式以及中序后序、前序中序、前序后序、层序创建二叉树【专为力扣刷题而打造】
acwing 3302. 表达式求值
[observation] Lenovo: 3x (1+n) smart office solution, releasing the "multiplier effect" of office productivity
记录线上bug解决list(未完待续7/4)
Idea case shortcut
How does win11 search for wireless displays? Win11 method of finding wireless display device
冰河的海报封面
Gobang go to work fishing tools can be LAN / man-machine
How to solve the problem that win11 cannot write the value to the registry key?
测试用例 (TC)
D3.js+Three.js数据可视化3d地球js特效
Why is TCP three handshakes and four waves
Idea plug-in