引言:
上一篇博客已经简单介绍的fastdfs的原理与安装,本节继续讨论fastdfs的实际操作部分。本身是搞java出身,下面我就主要介绍关于java操作进行演示
fastdfs的入门到精通(引言和单机安装)
准备条件:
1.启动tracker和storage服务
java操作
1.搭建环境,我使用idea进行演示,首先创建一个fastdfs的maven项目,删除其中src文件夹,在此项目基础上建立相关父子项目来进行演示。然后新建一个moudle,建成后如下:
2.从github下载相关源码包: fastdfs-client-java
下载后如下:
3. copy 其中的org文件到第一步项目中的fastdfs_java的main/java下
4.copy配置文件到resources
5.修改配置文件,把fastdfs-client.properties.sample 修改为fastdfs-client.properties 来让程序识别 ,然后把文件内容清空。写上tracker服务器地址即可
6.写测试接口
在准备写测试接口,要在pom中追加junit的依赖:
在test包下创建TestFastdfs进行测试:
package huhy;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;
import java.io.IOException;
/**
* @Author: huhy
* @Date:2020/3/17 16:21
* 项目名称:fastdfs
* @description: 测试
*/
public class TestFastdfs {
/**
* 测试文件上传
* @throws IOException
* @throws MyException
*/
@Test
public void testFirstFastdfsCmd() throws IOException, MyException {
//初始化配置文件
ClientGlobal.init("fastdfs-client.properties");
//tracker 客户端
TrackerClient trackerClient = new TrackerClient();
//获取trackerServer
TrackerServer trackerServer = trackerClient.getTrackerServer();
//创建StorageClient 对象
StorageClient storageClient = new StorageClient(trackerServer);
//文件元数据信息组
NameValuePair[] nameValuePairs = {new NameValuePair("author","huhy")};
/**
* 参数1 本地路径
* 参数2 后缀名
* 参数3 文件元数据属性
*/
String[] txts = storageClient.upload_file("F:\2020学习\fastdfs\测试上传.txt", "txt", nameValuePairs);
for (String txt : txts) {
System.out.println(txt);
}
}
/**
* 测试下载文件
* @throws IOException
* @throws MyException
*/
@Test
public void testDownloadFile() throws IOException, MyException {
//初始化配置文件
ClientGlobal.init("fastdfs-client.properties");
//tracker 客户端
TrackerClient trackerClient = new TrackerClient();
//获取trackerServer
TrackerServer trackerServer = trackerClient.getTrackerServer();
//创建StorageClient 对象
StorageClient storageClient = new StorageClient(trackerServer);
//测试文件下载
storageClient.download_file("group1", "M00/00/00/wKjsgl5wkXuATLO3AAAAGXCvZ6w695.txt","f:/a.txt");
}
}
注意,上面测试只是简单测试上传和下载方法,关于java操作fastdfs的API还有很多,不一一测试,上面演示主要是让大家对java操作fastdfs有一个上下连贯的思想。
在上面演示中,可能会遇到两个典型的错误。
1.配置文件错误:
解决办法:复制 tracker_server 替换配置文件 “ = ” 前配置即可:
2. 连接tracker服务器超时问题:
解决办法: 这个是老问题,因为我们配置好服务器后忘了关闭防火墙造成的,关闭防火墙即可:
我使用的centos7 关闭防火墙命令为
firewall-cmd --state 查看防火墙状态
systemctl stop firewalld.service 临时关闭防火墙(重启后失效)
systemctl disable firewalld.service 永久关闭防火墙
补充:
1.很多人会有疑问,为啥不直接引用fastdfs-cleint的maven包
因为github上没有官方的客户端请求包,现在发布到github上的包大多数都是各个公司根据自己公司情况封装过的,所以不建议使用。鉴于这种情况,作者余庆也写了一个,就是上面我下载的那个源码包。
那为啥这个不能引用呢,因为作者在开发中编译环境可能存在差异,在我们引用的时候可能会报这样那样的错误,最经典的是java编译环境不匹配。所以官方建议我们下载源码包,根据自己公司环境自己构建相对于的jar包进行使用,这也是上面演示引入源码重新编译的原因。
关于java操作fastdfs的几个典型的api介绍,暂时介绍到这里,后续介绍springboot的相关整合,配置,操作。