一:前言
FastDFS服务器的搭建都是运维人员完成的,开发人员只需知道tracker服务器IP地址和端口号即可
二:环境装备
1.为了编程成员在应用程序中使用FastDFS,官网提供了java版的客户端
2.在pom.xml文件中添加依赖
<dependency>
<groupId>fastdfs_client</groupId>
<artifactId>fastdfs_client</artifactId>
<version>1.25</version>
依赖根据源文件的pom.xml得来
3.保存后,项目中就会添加该依赖了
三.使用FastDFS代码上传图片
1.创建配置文件,内容为tracker服务器地址
2.编写测试类
@Test
public void testUpload() throws Exception {
//1.创建一个配置文件,文件名任意,内容是tracker服务器的地址
//2.使用全局对象加载配置文件
ClientGlobal.init("G:代码/e3-manager-web/src/main/resources/conf/client.conf");
//3.创建一个TrackClient
TrackerClient trackerClient = new TrackerClient();
//4.通过TrackClient获得一个TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//5.创建一个storageServer的引用,可以是null
StorageServer storageServer = null;
//6.创建一个storageClient,参数需要TrackerServer和StorageServer
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//7.使用StorageClient上传文件
String[] strings = storageClient.upload_file("G:/图片/1.jpg", "jpg", null);
for (String string:strings){
System.out.println(string);
}
}
四.封装FastDFS工具类
1.在正式的项目开发中,我们通常会将有关FastDFS操作封装为一个工具类
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
public class FastDFSClient {
private TrackerClient trackerClient = null;
private TrackerServer trackerServer = null;
private StorageServer storageServer = null;
private StorageClient1 storageClient = null;
public FastDFSClient(String conf) throws Exception {
if (conf.contains("classpath:")) {
conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
}
ClientGlobal.init(conf);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileName 文件全路径
* @param extName 文件扩展名,不包含(.)
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileName, extName, metas);
return result;
}
public String uploadFile(String fileName) throws Exception {
return uploadFile(fileName, null, null);
}
public String uploadFile(String fileName, String extName) throws Exception {
return uploadFile(fileName, extName, null);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileContent 文件的内容,字节数组
* @param extName 文件扩展名
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileContent, extName, metas);
return result;
}
public String uploadFile(byte[] fileContent) throws Exception {
return uploadFile(fileContent, null, null);
}
public String uploadFile(byte[] fileContent, String extName) throws Exception {
return uploadFile(fileContent, extName, null);
}
}
2.测试该工具类:
@Test
public void testFastDfsClient() throws Exception{
FastDFSClient fastDFSClient = new FastDFSClient("G:/代码/e3-manager-web/src/main/resources/conf/client.conf");
String string = fastDFSClient.uploadFile("G:/图片/1.jpg");
System.out.println(string);
}
3.返回文件路径表示工具类封装成功: