1、下载FastDFS相关jar包
2、pom.xml配置文件内容如下
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.25</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar</systemPath>
</dependency>
3、FastDFS上传下载文件相关代码
package com.ksource.common.util;
import org.csource.fastdfs.*;
import java.io.*;
/**
* @Author dxy
* @Date 2023/3/30 10:04
* @Description
*/
public class FastDFSUtil {
public static void main(String[] args) {
// 上传文件
testUpload();
// 下载文件
//testDownload();
}
private static void testUpload() {
try{
// 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。TODO 改成自己的路径
ClientGlobal.init("E:\\fdfs_client.conf");
// 2、创建一个 TrackerClient 对象。直接 new 一个。
TrackerClient trackerClient = new TrackerClient();
// 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。
TrackerServer trackerServer = trackerClient.getConnection();
// 4、创建一个 StorageServer 的引用,值为 null
StorageServer storageServer = null;
// 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
// 6、使用 StorageClient 对象上传图片。
//扩展名不带“.” TODO 改成自己的路径
String[] strings = storageClient.upload_file("D:\\Alley.jpg", "jpg",
null);
// 7、返回数组。包含组名和图片的路径。
for (String string : strings) {
System.out.println(string);
}
// http://ip/group1/M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg
} catch (Exception e){
e.printStackTrace();
}
}
/**
* 下载文件
*/
public static void testDownload() {
try {
// 配置文件 TODO 改成自己的路径
ClientGlobal.init("E:\\fdfs_client.conf");
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//http://ip/group1/M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg
byte[] b = storageClient.download_file("group1", "M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg");
// 下載文件
download(b);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void download(byte[] bytesArray) {
FileOutputStream fos = null;
File file;
try {
// TODO 改成自己的路径
file = new File("E:\\picture.jpg");
fos = new FileOutputStream(file);
fos.write(bytesArray);
fos.flush();
System.out.println("成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException ioe) {
System.out.println("出錯了");
}
}
}
}
4、fdfs_client.conf配置文件内容如下
# connect timeout in seconds # default value is 30s connect_timeout=30 # network timeout in seconds # default value is 30s network_timeout=60 # the base path to store log files # 改这里 文件存储的路径 base_path=/app/fastdfs_document/data # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address # 改这里,防火墙记得关了或者开通端口,安全组也要加入,如果有的话 tracker_server=10.65.12.75:22122 #standard log level as syslog, case insensitive, value list: ### emerg for emergency ### alert ### crit for critical ### error ### warn for warning ### notice ### info ### debug log_level=info # if use connection pool # default value is false # since V4.05 use_connection_pool = false # connections whose the idle time exceeds this time will be closed # unit: second # default value is 3600 # since V4.05 connection_pool_max_idle_time = 3600 # if load FastDFS parameters from tracker server # since V4.05 # default value is false load_fdfs_parameters_from_tracker=false # if use storage ID instead of IP address # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # default value is false # since V4.05 use_storage_id = false # specify storage ids filename, can use relative or absolute path # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # since V4.05 storage_ids_filename = storage_ids.conf #HTTP settings 访问nginx的端口 改这里 http.tracker_server_port=80 #use "#include" directive to include HTTP other settiongs ##include http.conf