package com.bjpowernode.p2p.admin.fastdfs;
import java.io.IOException;
import org.csource.common.MyException;
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;
/**
* fastdfs 文件上傳
*
* @author ldd
*
*/
public class FastdfsClient {
/**
* 文件上傳
*
* @param bytes 文件字節
* @param fileExtend 文件尾名 不需要.
* @return
*/
public static String[] uploadFile (byte[] bytes, String fileExtend) {
TrackerServer trackerServer = null;
StorageServer storageServer = null;
//利用fastdfs客戶端,實現文件上傳到fastdfs服務器上
try {
//代碼是模板式的
//1、加載配置文件
ClientGlobal.init("fastdfs_client.conf");
//2、創建一個tracker的客戶端
TrackerClient trackerClient = new TrackerClient();
//3、通過trackerClient獲取一個連接,連接到Tracker,得到一個TrackerServer
trackerServer = trackerClient.getConnection();
//4、通過trackerClient獲取一個存儲節點的StorageServer
storageServer = trackerClient.getStoreStorage(trackerServer);
//5、通過trackerServer和storageServer構造一個Storage客戶端
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
return storageClient.upload_file(bytes, fileExtend, null);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
try {
//關閉服務,釋放資源
if (null != storageServer) {
storageServer.close();
}
if (null != trackerServer) {
trackerServer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 文件上傳
*
* @param bytes 本地文件名
* @param fileExtend 文件末尾名 不要.
* @return
*/
public static String[] uploadFile (String localFile, String fileExtend) {
TrackerServer trackerServer = null;
StorageServer storageServer = null;
//利用fastdfs客戶端,實現文件上傳到fastdfs服務器上
try {
//代碼是模板式的
//1、加載配置文件
ClientGlobal.init("fastdfs_client.conf");
//2、創建一個tracker的客戶端
TrackerClient trackerClient = new TrackerClient();
//3、通過trackerClient獲取一個連接,連接到Tracker,得到一個TrackerServer
trackerServer = trackerClient.getConnection();
//4、通過trackerClient獲取一個存儲節點的StorageServer
storageServer = trackerClient.getStoreStorage(trackerServer);
//5、通過trackerServer和storageServer構造一個Storage客戶端
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
return storageClient.upload_file(localFile, fileExtend, null);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
try {
//關閉服務,釋放資源
if (null != storageServer) {
storageServer.close();
}
if (null != trackerServer) {
trackerServer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 刪除圖片
*
* @param group
* @param filePath
* @return
*/
public static int deleteFile (String group, String filePath) {
TrackerServer trackerServer = null;
StorageServer storageServer = null;
//利用fastdfs客戶端,實現文件上傳到fastdfs服務器上
try {
//代碼是模板式的
//1、加載配置文件
ClientGlobal.init("fastdfs_client.conf");
//2、創建一個tracker的客戶端
TrackerClient trackerClient = new TrackerClient();
//3、通過trackerClient獲取一個連接,連接到Tracker,得到一個TrackerServer
trackerServer = trackerClient.getConnection();
//4、通過trackerClient獲取一個存儲節點的StorageServer
storageServer = trackerClient.getStoreStorage(trackerServer);
//5、通過trackerServer和storageServer構造一個Storage客戶端
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
//fastdfs刪除文件
return storageClient.delete_file(group, filePath);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
try {
//關閉服務,釋放資源
if (null != storageServer) {
storageServer.close();
}
if (null != trackerServer) {
trackerServer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return -1;
}
}