环境的搭建可以参考,搭建的文章.
在Java中使用fdfs上传文件
1、添加相关的maven依赖
maven仓库中没有相关的jar包只能从github中去下载。
https://github.com/happyfish100/fastdfs-client-java
在eclipse中导入相关的maven工程,然后run -》maven-install
在pom.xml文件中加入:
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
2、Java代码
创建fdfs_client.properties配置文件,内容如下:
tracker_server = 192.168.1.116:22122(其他的内容自行添加)
代码:
public class FastDFS_Test {
@Test
public void uploadFile() throws Exception{
// 1、向工程中添加相关的依赖
// 2、创建一个配置文件,指向tracker的服务器的地址
// 3、加载配置文件
ClientGlobal.init("/home/lxj/eclipse-workspace/taotao-mannger-web/src/main/resources/resource/fastdfs-client.properties");
// 4、创建一个tracker_client对象
TrackerClient trackerClient = new TrackerClient();
// 5、使用tracker_client对象获取tracker_server对象
TrackerServer trackerServer = trackerClient.getConnection();
// 6、storageServer的引用,null就行
StorageServer storageServer = null;
// 7、床架你一个storageClient对象,trackerserver和storageserver就行
StorageClient client = new StorageClient(trackerServer, storageServer);
// 8、使用storageClient对象上传文件)(本地文件名,扩展名、元数据)
String[] strs = client.upload_file("/home/lxj/桌面/mao.jpeg", "jpeg", null);
for(String str:strs) {
System.out.println(str);
}
}
}
3、封装好的工具类:
package com.taotao.utils;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
public class FastDFSClient {
private TrackerClient trackerClient = null;
private TrackerServer trackerServer = null;
private StorageServer storageServer = null;
private StorageClient1 storageClient = null;
public FastDFSClient(String conf) throws Exception {
if (conf.contains("classpath:")) {
conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
}
ClientGlobal.init(conf);
trackerClient = new TrackerClient();
trackerServer = trackerClient.getConnection();
storageServer = null;
storageClient = new StorageClient1(trackerServer, storageServer);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileName 文件全路径
* @param extName 文件扩展名,不包含(.)
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileName, extName, metas);
return result;
}
public String uploadFile(String fileName) throws Exception {
return uploadFile(fileName, null, null);
}
public String uploadFile(String fileName, String extName) throws Exception {
return uploadFile(fileName, extName, null);
}
/**
* 上传文件方法
* <p>Title: uploadFile</p>
* <p>Description: </p>
* @param fileContent 文件的内容,字节数组
* @param extName 文件扩展名
* @param metas 文件扩展信息
* @return
* @throws Exception
*/
public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
String result = storageClient.upload_file1(fileContent, extName, metas);
return result;
}
public String uploadFile(byte[] fileContent) throws Exception {
return uploadFile(fileContent, null, null);
}
public String uploadFile(byte[] fileContent, String extName) throws Exception {
return uploadFile(fileContent, extName, null);
}
}