前言:
FastDFS文件系统是一个轻量级分布式文件系统,它是一个软件/软件服务器,这个软件可以用来管理文件。
功能包括:
文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题。特别适合以文件为载体的在线服务,例如:相册网站、文档网站、图片网站、视屏网站…
目的:
使用java代码实现在FastDFS文件系统的上传、下载、删除的功能;
步骤:
该步骤是基于已经安装了FastDFS文件系统基础上写的。
第一步:创建一个普通java工程。
第二步:在资源文件夹下(resources目录下),创建一个文件:fastfds.conf文件(文件名字随便取,但必须是以 .conf 为后缀名的文件)。
第三步:在fastdfs.conf文件中,指定跟踪器的IP+端口。如图:
第四步:创建一个类:RunMain(类名随便取)。
第五步:在RunMain类中,写上传,下载,删除等代码。
上传:
第一步:根据fastdfs.conf配置文件去配置FastDFS环境:
ClientGlobal.init("fastdfs.conf");
第二步:创建跟踪器客户端对象:
TrackerClient tc = new TrackerClient();
第三步:根据跟踪器客户端对象,获取跟踪服务器对象:
TrackerServer ts = tc.getConnection();
第四步:根据跟踪服务器对象,获取存储服务器对象:
StorageServer ss = tc.getStoreStorage(ts);
第五步:根据存储服务器对象,获取存储客户端对象:
StorageClient sc = new StorageClient(ts, ss);
注意:对文件的上传、下载、删除都是使用存储服务器对象StorageClient 来操作的。
第六步:调用存储服务器对象的上传方法,将文件上传。
/*
上传文件到FastDFS
参数 1 需要上传的文件在本地磁盘的绝对路径
如果是web工程,参数1就是:需要上传的文件的字节数组
参数 2 需要上传的文件的扩展名
参数 3 需要上传的文件的属性文件 通常不上传
上传成功后返回一个字符串数组,这个数组很重要必须要将数组中的数据持久化保存
数组中一共有2个元素
元素1 为文件在FastDFS中的组名
元素2 为文件在FastDFS中的远程文件名
*/
String result[]= sc.upload_file("d:/QRCode.jpg","jpg",null);
第七步:关闭资源。
sc.close();
ss.close();
ts.close();
下载:
注意:前面五个步骤以及第七个步骤,和上传是一样的。唯一不同的是:存储服务器对象调用的方法不一样。这里调用的是下载的方法。所以我就直接写第六个步骤。
第六步: 调用存储服务器对象的下载方法,将文件下载。
普通java工程
//创建Storage客户端对象,利用这个对象提供的方法来完成文件的上传和下载操作
sc=new StorageClient(ts,ss);
//从FastDFS中下载文件到本地磁盘
//参数 1 文件在FastDFS中的组名
//参数 2 文件在FastDFS中的远程文件名
//参数 3 为文件需要保存的本地文件绝对路径
//返回 值为正数 0表示文件下载成功
int result=sc.download_file("group1","M00/00/00/wKiIgF3bUQ6AXb1mAAArwHlYfM4460.jpg","d:/abc.jpg");
web工程:
//创建Storage客户端对象,利用这个对象提供的方法来完成文件的上传和下载操作
sc=new StorageClient(ts,ss);
//从FastDFS中下载文件到本地磁盘
//参数 1 文件在FastDFS中的组名
//参数 2 文件在FastDFS中的远程文件名
//返回 字节数组,这个字节数组就是具体的文件流
byte[]buffFile=sc.download_file(groupName,remoteFileName);
删除:
注意:前面五个步骤以及第七个步骤,和上传是一样的。唯一不同的是:存储服务器对象调用的方法不一样。这里调用的是删除的方法。所以我就直接写第六个步骤。
第六步: 调用存储服务器对象的删除方法,将文件删除。
普通java工程和web工程是一样的:
//创建Storage客户端对象,利用这个对象提供的方法来完成文件的上传和下载操作
sc=new StorageClient(ts,ss);
//从FastDFS中删除某个文件
//参数 1 为文件在组的组名
//参数 2 为文件在FastDFS中的远程文件名
//返回一个正数 0表示删除成功
int result=sc.delete_file("group1","M00/00/00/wKiIgF3bUQ6AXb1mAAArwHlYfM4460.jpg");