Java 实现 FastDFS 操作
-
FastDFS 安装教程 https://blog.youkuaiyun.com/m0_37633306/article/details/109562868
-
依赖包: FastDFS 安装教程下载链接中的 fastdfs-client-java-1.28.zip
1.依赖包导入
解压 fastdfs-client-java-1.28.zip,在解压后的目录下,进入 CMD 命令行执行以下命令,将依赖安装进 Maven 库(需要配置好 Maven 环境)
mvn clean install
在项目中导入Maven 依赖
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.28-SNAPSHOT</version>
</dependency>
2.创建 FastDFS 的配置文件
在项目的 resources 下新建 Fast 的配置文件 fastdfs.config,并写内容如下:
tracker_server=ip:22122
- 此处为 FastDFS 的 tracker_server 所在的 ip 地址和配置的相应端口
3.Java 操作 FastDFS 代码
测试时,使用本地测试即可
package com.yht.util;
import org.csource.common.MyException;
import org.csource.fastdfs.*;
import java.io.IOException;
public class FastDFSUtils {
private static TrackerClient trackerClient = null;
private static TrackerServer trackerServer = null;
private static StorageServer storageServer = null;
private static StorageClient storageClient = null;
public static String [] upload(byte[] fileByteArray, String fileExtName) {
try {
// 加载配置文件
ClientGlobal.init("fastdfs.conf");
trackerClient = new TrackerClient();
trackerServer = trackerClient.getTrackerServer();
storageServer = trackerClient.getStoreStorage(trackerServer);
storageClient = new StorageClient(trackerServer,storageServer);
// 本地上传
// 参数1是要上传的本地文件路径
// 参数2是要上传的文件类型
// 参数3可为空
String result[] = storageClient.upload_file("D:\\图片\\test.png","png",null);
// web 上传
// 参数1是要上传的文件的字节数组
// 参数2是要上传的文件类型
// 参数3可为空
// String result[] = storageClient.upload_file(fileByteArray,fileExtName,null);
return result;
/*
* 上传结果是一个 String 数组
* result[0] 是组名
* result[1] 是远程文件名
*/
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
if(storageClient != null) {
try {
storageClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static byte[] download(String groupName, String remoteFileName) {
try {
ClientGlobal.init("fastdfs.conf");
trackerClient = new TrackerClient();
trackerServer = trackerClient.getTrackerServer();
storageServer = trackerClient.getStoreStorage(trackerServer);
storageClient = new StorageClient(trackerServer,storageServer);
// 本地下载
// 只有返回 1 时,下载成功
// 参数1是组名
// 参数2是远程文件名
// 参数3是下载后的本地文件保存路径
int result = storageClient.download_file("group1","M00/00/00/Cs4ACl-jqSOAT4NjAAnetxrB0JM688.png","D:\\图片\\test-download.png");
//
// web 下载
// 返回一个字节数组
// 参数1是组名
// 参数2是远程文件名
// byte[] fileByteArray = storageClient.download_file(groupName,remoteFileName);
// return fileByteArray;
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
if(storageClient != null) {
try {
storageClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static int delete(String groupName, String remoteFileName) {
try {
ClientGlobal.init("fastdfs.conf");
trackerClient = new TrackerClient();
trackerServer = trackerClient.getTrackerServer();
storageServer = trackerClient.getStoreStorage(trackerServer);
storageClient = new StorageClient(trackerServer,storageServer);
// 只有返回 0 时,删除成功
// 参数1是组名
// 参数2是远程文件名
int result = storageClient.delete_file(groupName,remoteFileName);
System.out.println(result);
return result;
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
if(storageClient != null) {
try {
storageClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return -1;
}
public static void main(String[] args) {
// upload();
// download();
// delete();
}
}