上篇文章:FastDFS文件存储服务器搭建我已经把fdfs服务器搭建好了,这篇文章我通过Java代码测试一下这个服务
第一步:pom文件中引用依赖:
<dependency>
<groupId>net.oschina.zcx7878</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
第二步:配置文件:fdfs_client.conf
# 连接超时时间
# 默认30秒
connect_timeout=30
# 网络超时时间
# default value is 30s
network_timeout=60
# 工作文件夹,日志存在此
# windows路径
base_path=D:/home/fastdfs
# LINUX路径
# base_path=/home/fastdfs
# 改为自己服务器的ip
tracker_server=162.178.169.37:22122
# 日志级别
log_level=info
# 是否使用连接池
use_connection_pool = false
# 连接闲置超时时间,连接如果闲置的时间超过本配置,则关闭次连接,单位秒
connection_pool_max_idle_time = 3600
# 是否从tracer server读取fastdfs的参数,默认为false
load_fdfs_parameters_from_tracker=false
# 是否使用storage id 替换 ip,默认为false
# 和tracker.conf该参数含义一样
# 本配置只有在load_fdfs_parameters_from_tracker=false时生效
# 本配置默认为false
use_storage_id = false
# 指定storage id的文件名,允许使用绝对路径
# 和tracker.conf该参数含义一样
# 本配置只有在load_fdfs_parameters_from_tracker=false时生效
storage_ids_filename = storage_ids.conf
#HTTP settings
http.tracker_server_port=8688
第三步:编写JAVA代码:
public static void main(String[] args) {
try {
// 需要上传的文件
String filePath = "C:\\Users\\Administrator\\Pictures\\Camera Roll\\OIP.jpg";
// FastDFS配置文件
String configurationFilePath = new ClassPathResource("FastDFS.conf").getFile().getAbsolutePath();
// 加载配置文件
ClientGlobal.init(configurationFilePath);
// 创建调度器对象
TrackerClient trackerClient = new TrackerClient();
// 通过调度器对象创建连接,得到调度器服务端
TrackerServer trackerServer = trackerClient.getConnection();
// 声明一个文件存储服务端引用
StorageServer storageServer = null;
// 创建文件存储客户端对象,需要两个参数:分别是调度器服务端对象、文件存储服务端的引用
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
// 使用文件存储客户端对象上传图片参数,分析源码的参数:
// * @param local_filename local filename to upload 要上传的本地文件名
// * @param file_ext_name file ext name, do not include dot(.), null to extract ext name from the local filename 上传文件扩展名,不包括点(.),从本地文件名中提取
// * @param meta_list meta info array 元信息数组
String[] strings = storageClient.upload_file(filePath, "jpg", null);
// 返回数组。包含组名和图片的路径。
for (String string : strings) {
System.out.println(string);
}
System.out.println("上传完成");
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
}
}
第四步:直接运行main方法:
可以看到运行结果,程序返回了上传文件的组名和图片路径。
第五步:通过浏览器访问我们上传的图片
上一步得到了图片上传的组名和图片路径,再拼接上fdfs服务器IP和端口,就能访问图片了:
这就说明我们的图片已经通过代码的方式上传到了fdfs服务器。
第六步:去服务器上看看这张图片:
我们在服务器上也找到了这张图片。