Linux下启动:Nginx(反向代理服务器),tracker(FastDFS调度中心) 和 storage(FastDFS的数据存储) 服务
Nginx
Tracker
Storage
客户端,Java Web
本地图片上传至FastDFS分布式文件系统的storage服务器,需要借助
fastdfs相关的所有资料 可以查看下载地址 : 点击打开链接
手动在本地Maven仓库里为fastdfs_client_1.25.jar包建立一个 Maven Project(jar)
fastdfs_client_1.25.pom
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>fastdfs_client</groupId>
<artifactId>fastdfs_client</artifactId>
<version>1.25</version>
</project>
根据fastdfs_client_1.25.pom文件里面的节点依次创建目录
手动创建后,在当前我们的web工程里面的Pom文件里面依赖一下
jar包引用好后,我们开始测试
(1)在项目的资源文件中,添加FastDFS的客户端配置文件,指定要使用哪一个(IP:Port)tracker(调度器)
client.conf (下面是我虚拟机上的tracker服务 IP,端口一般都是默认的22122)
tracker_server=192.168.153.134:22122
(2)本地C盘放一张测试图片
(3)demo实现图片的上传
FastDFSTest.java
package com.taotao.fastdfs;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;
public class FastDFSTest {
@Test
public void testUpLoad() throws Exception{
String conf_Path="........\\client.conf";//这里放你们的配置文件的全路径
//1.初始化客户端配置文件,指定一个Tracker服务调度节点
ClientGlobal.init(conf_Path);
//2.创建Tracker客户端对象
TrackerClient tClient = new TrackerClient();
//3.创建Tracker服务端对象
TrackerServer tServer =tClient.getConnection();
//4.声明一个Storage server对象,null
StorageServer storageServer = null;
//5.通过Tracker server 和 Storage server 构造一个 storage clinet 对象
StorageClient storageClient = new StorageClient(tServer, storageServer);
//6.利用storageClient对象,调用上传文件的方法
String[] result = storageClient.upload_file("C:\\1.png", "png", null);
//7.打印result数组中的 内容
for(String s:result){
System.out.println(s);
}
}
}
(4)执行JUnit测试
(5)排查原因
在Linux系统中,修改防火墙配置,在iptables中添加22122端口开放配置信息
-A INPUT -p tcp -m tcp --dport 22122 -j ACCEPT
重启防火墙配置
/etc/init.d/iptables restart
防火墙配置重启后,本地Dos命令窗口下 telnet 192.168.153.134 22122 端口,成功
(6)再次执行,JUnit单元测试
(7)干翻防火墙(实际开发中,这种访问不了端口的问题,运维人员会帮我们解决的)
service iptables stop 停掉服务
(8)最后的希望,再次,进行JUnit单元测试
组合图片Url地址:http://192.168.153.134/group1/M00/00/00/wKiZhlnEr8eAb-JNAAJKZecvYXE849.png
整个上传图片测试成功,上传图片成功后返回的String数组里包含了图片在storage server端生成的规则,拿到这个,我们可以进行本地数据库存储,当然,本地数据库里面我们只存文件的字符串地址就行!