服务器安装完毕后,测试通过Java调用fastdfs。
fastdfs的安装可以参考我的博文:分布式文件系统FastDfs的搭建
1.加载Maven依赖
fastdfs 没有在中心仓库中提供获取的依赖坐标。只能自己通过源码方式编译,打好jar 包,安装到本地仓库。
官方仓库地址:
https://github.com/happyfish100/fastdfs-client-java
可以在项目的根目录下使用git clone 命令,将代码下载
2.导入工程
随后可以用idea直接把这个源码作为模块导入工程
导入工程后,别的不用改,只把pom.xml中的版本改成1.27。
3.执行maven的install命令将项目打包入本地仓库
最后执行install
安装完成后就可以在自己的项目任意一个模块直接使用这个坐标了。
<!--添加fdfs依赖-->
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27</version>
</dependency>
上传测试
在你要使用fastdfs的项目模块中的resource中添加tracker.conf 配置文件
tracker.conf:
tracker_server=xxx.xxx.xxx.xxx:22122
# 连接超时时间,针对socket套接字函数connect,默认为30秒
connect_timeout=30000
# 网络通讯超时时间,默认是60秒
network_timeout=60000
@Test
public void textFileUpload() throws IOException, MyException {
String file = this.getClass().getResource("/tracker.conf").getFile();
ClientGlobal.init(file);
TrackerClient trackerClient=new TrackerClient();
TrackerServer trackerServer=trackerClient.getConnection();
StorageClient storageClient=new StorageClient(trackerServer,null);
String orginalFilename="e://victor.jpg";
String[] upload_file = storageClient.upload_file(orginalFilename, "jpg", null);
for (int i = 0; i < upload_file.length; i++) {
String s = upload_file[i];
System.out.println("s = " + s);
}
}
打印结果:
这个打印结果实际上就是我们访问的路径,加上服务器地址我们可以拼接成一个字符串:http://192.168.1.136/group1/M00/00/00/wKgBiF3u5IKAKPMPAAAl_GXv6Z4569_big.jpg 可以直接放到浏览器去访问
对接到业务模块中
修改业务模块中文件上传FileUploadController的方法
@RestController
@CrossOrigin
public class FileUploadController {
@Value("${fileServer.url}")
private String fileUrl;
// http://localhost:8082/fileUpload
@RequestMapping("fileUpload")
public String fileUpload(MultipartFile file) throws IOException,MyException{
String imgUrl = fileUrl;
if(file!=null) {
//上传哪张图片回显哪张图片
//表示读取配置文件中的tracker.conf
String configFile = this.getClass().getResource("/tracker.conf").getFile();
//初始化
ClientGlobal.init(configFile);
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
//存储数据
StorageClient storageClient = new StorageClient(trackerServer, null);
//String orginalFilename = "f://Temp//iu-006.jpg";
String orginalFilename = file.getOriginalFilename();
//获取文件后缀名
String extName = StringUtils.substringAfterLast(orginalFilename, ".");
//保存数据
String[] upload_file = storageClient.upload_file(file.getBytes(), extName, null);
for (int i = 0; i < upload_file.length; i++) {
String path = upload_file[i];
//System.out.println("s = " + s);
imgUrl+="/"+path;
// path = group1
// path = M00/00/00/wKgBiF3vcZKAbGnXAAttGURDaFU215.jpg
}
}
return imgUrl;
}
}
利用@Value 标签可以引用application.properties中的值
注意:application.properties:fastdfs的路径是有http://