首先,我们先了解一些FastDFS的常用类和一些API
1、CLientGlobal:用于加载配置文件的公共客户端工具
方法:
(1)init(String conf_filename)
:根据配置文件路径及命名,加载配置文件并设置客户端公共参数,配置文件类型为conf文件。可以使用绝对路径或相对路径加载。
(2)initByProperties(Properties pros)
:根据Properties对象设置客户端公共参数
2、TrackerServer:跟踪服务器类型。此类型的对象是通过跟踪客户端对象构建的。实质上就是一个与FastDFS TrackerServer的链接对象。
构建对象的方式:trackerClient.getTrackerServer();
3、TrackerClient:跟踪器客户端类型。创建此类型对象时,需传递跟踪组(即跟踪器的访问地址信息)。如果是无参构造方法默认使用ClientGlobal.g_tracker_group常量作为跟踪器组来构造对象。创建对象的方式为:
new TrackerClient()
或
new TrackerClient(ClientGlobal.g_tracker_group)
4、StorageServer:存储服务类型。此类型的对象是通过跟踪器客户端对象构建的。实质上就是一个与FastDFS Storage Server 的链接对象。是代码中与 StroageServer 链接的工具。获取的具体存储服务链接,是由 Tracker Server 分配的,所以构建
存储服务对象时,需要依赖跟踪器服务对象。
构建对象的方式为:trackerClient.getStoreStorage(trackerServer)
5、StorageClient:存储客户端类型。此类型的对象是通过构造方法创建的。创建时,需传递跟踪服务对象和存储服务对象。此对象实质上就是一个访问 FastDFS Storage Server 的客户端对象,用于实现文件的读写操作。
创建对象的方式为:new StorageClient(trackerServer,storageServer)
常用的方法有:
(1)upload_file(String local_filename, String file_ext_name, NameValuePair[] meta_list);
上传文件的方法
参数 local_filename
为要上传的本地文件路径及文件名,可使用绝对路径或相对路径;
参数file_ext_name
为上传文件的扩展名,如果传递null,则自动解析文件扩展名;
参数 meta_list
是用于设置上传文件的源数据的,如上传用户、上传描述等。
(2)download_file(String group_name, String remote_file_name);
下载文件的方法。
参数group_name
为组名/卷名,就是 Storage Server中/etc/fdfs/storage.conf 配置文件中配置的group_name 参数值,也是要下载的文件所在组/卷的命名;
参数 remote_file_name
为要下载的文件的路径及文件名。
(3)delete_file(String group_name, String remote_file_name);
删除文件的方法,
参数group_name
为组名/卷名,就是 Storage Server中/etc/fdfs/storage.conf 配置文件中配置的group_name 参数值,也是要下载的文件所在组/卷的命名;
参数 remote_file_name
为要要删除的文件的路径及文件名。
功能的实现代码
创建一个项目
1、添加FastDFS要使用的依赖
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.29-SNAPSHOT</version>
</dependency>
2、在resource目录下创建xxx.conf
(后缀名规定为.conf)文件,添加如下配置
#连接超时
connect_timeout = 2
#网络超时
network_time = 30
#编码格式
charset = utf-8
#tracker端口号
http.tracker_http_port = 8080
#防盗链功能
http.anti_steal_token = no
#秘钥
http.secret_key = FastDFS12345678
#tracker的ip地址:端口号(指向你自己的IP地址和端口,可以为多个)
tracker_server =
#连接池的配置
connection_pool.enabled = true
connection_pool.max_count_per_entry = 500
connection_pool.max_idle_time = 3600
connection_pool.max_wait_time_in_ms = 1000
3、添加一个文件上传对象类
public class FastDFSFile {
private String name; //文件名
private byte[] content; //详细描述
private String ext; //后缀名
private String md5; //文件md5编码
private String author; //作者
private String height; //高度
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getHeight() {
return height;
}
public void setHeight<