1.定义 FastDFS 工具类
package an.cxy.util;
import org.csource.fastdfs.*;
public class ClientGlobalUtil {
private static StorageClient storageClient;
private static final String path = "fdfs.conf";
static {
try{
ClientGlobal.init(path);
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
StorageServer storeStorage = trackerClient.getStoreStorage(trackerServer);
storageClient = new StorageClient(trackerServer,storeStorage);
}catch (Exception e){
e.printStackTrace();
}
}
public static StorageClient getStorageClient(){
return storageClient;
}
/* public static void main(String[] args) {
System.out.println(getStorageClient());
}*/
}
2.上传文件测试
packagesinge;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.StorageClient;
import org.junit.Test;
public class TestFileUpload{
@Test
public void test() {
StringfileIds[] =testUpload("testFile", "1.jpg","jpg");
if(fileIds==null){
System.out.println("文件上传失败!");
}
System.out.println(fileIds.length);
System.out.println("组名/卷名:"+ fileIds[0]);
System.out.println("路径:"+fileIds[1]);
}
public String[] testUpload(StringdirName,StringfileName,StringfileType){
StorageClientstorageClient=FastDFSClientUtils.getStorageClient();
try{ // 要上传的文件的元数据。可以自定义。
NameValuePairnvp[]=newNameValuePair[]{
newNameValuePair("filename",fileName)
};
/* * String[] upload_file(String fileName, String fileExtName, NameValuePair[]
metaList)
*fileName - 要上传的本地文件,包含路径地址。 * fileExtName - 文件后缀名;可以不传递,也就是传递一个 null。FastDFS 可以自动的在文件名中截取文件类型。 *metaList - 文件的描述元数据。 * 返回的结果是一个字符串数组。长度为 2。0 位置是卷名-group1,1 位置是 文件名-M00/00/00/xxxxxx */
String fileIds[] =storageClient.upload_file(dirName+"/"+fileName,fileType,nvp);
return fileIds;
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
}