Java操作FastDFS
测试文件上传
- 创建工程:新建一个Maven或Spring Boot工程,命名为 01-fastdfs-primary
- 添加依赖:
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-RELEASE</version>
</dependency>
- 如果依赖导入不进来,可以到这里下载:http://maven.yonyoucloud.com/nexus/content/repositories/releases/org/csource/fastdfs-client-java/1.27-RELEASE/,然后执行下面的命令
mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversion=1.27-RELEASE -Dpackaging=jar -Dfile=/xxxpath/fastdfs-client-java-1.27-RELEASE.jar
- 配置文件:在资源路径下新建配置文件 fdfs_client.conf,并添加如下配置
tracker_server=192.168.254.125:22122
import lombok.extern.slf4j.Slf4j;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import java.net.URLDecoder;
import static com.sun.xml.internal.ws.commons.xmlutil.Converter.UTF_8;
@Slf4j
public class FastDFSClient {
private static TrackerClient trackerClient = null;
private static TrackerServer trackerServer = null;
private static StorageServer storageServer = null;
private static StorageClient1 client = null;
private static String TRACKER_CLIENT_CONF = "/fdfs_client.conf";
static {
try {
String confName = FastDFSClient.class.getResource(TRACKER_CLIENT_CONF).getPath();
confName = URLDecoder.decode(confName, UTF_8);
ClientGlobal.init(confName);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
client = new StorageClient1(trackerServer, storageServer);
} catch (Exception e) {
log.error("FastDFSClient error", e);
}
}
public static String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
String result = client.upload_file1(fileName, extName, metas);
return result;
}
public static void main(String[] args) {
try {
String file = uploadFile("/Users/yangwei/Desktop/bj.jpg", "png", null);
log.info("upload:"+file);
} catch (Exception e){
log.error("upload file to FastDFS failed", e);
}
}
}
- 运行代码,访问测试:http://192.168.254.129/group2/M00/00/00/wKj-gV0mxhSATjGrAAF1koByzKQ373.png、
http://192.168.254.132/group2/M00/00/00/wKj-gV0mxhSATjGrAAF1koByzKQ373.png
Spring Boot整合FastDFS
- 创建工程:复制前面工程 01-fastdfs-primary,并并重命名为 01-fastdfs-primary。
- 添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 封装 FastDFSFile 上传的实体类:基础信息包括文件名、内容、文件类型、作者等。
@Data
@NoArgsConstructor
public class FastDFSFile {
private String fileName;
private byte[] fileContent;
private String fileExt;
private String md5;
private String author;
public FastDFSFile(String fileName, String fileExt, byte[] fileContent) {
this.fileName = fileName;
this.fileExt = fileExt;
this.fileContent = fileContent;
}
}
public interface FastDFSService {
Optional<String> uploadFile(MultipartFile file);
Optional<String> uploadFile(FastDFSFile file);
void downloadFile(String groupName, String remoteFileName);
boolean deleteFile(String groupName, String remoteFileName) throws Exception;
Optional<FileInfo> getFileInfo(String groupName, String remoteFileName);
}
@Slf4j
@Service
public class FastDFSServiceImpl implements FastDFSService {
private static String TRACKER_CLIENT_CONF = "fdfs_client.conf";
private static TrackerClient tracker