FastDFS Java Api 操作
1.用eclipse把源代碼打成jar文件:(源代碼下載地址:https://github.com/happyfish100/fastdfs-client-java)2、把fastdfs_client.jar 添加到Maven倉庫
#執行 maven命令 添加fastdfs_client.jar 到maven 倉庫 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversion=5.0.4 -Dpackaging=jar -Dfile=/Users/shenwei/Desktop/fastdfs_client.jar
3、查看 fastdfs_client.jar。可以看到jar文件
4、創建一個maven項目,在pom中添加 fastdfs_client 依賴。
- #添加依賴
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.csource</groupId>
- <artifactId>fastdfs-client-java</artifactId>
- <version>5.0.4</version>
- </dependency>
5、在src/main/resource 下創建 fdfs_client.conf 配置文件
#fdfs_client.conf 配置 connect_timeout = 10 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 8888 http.anti_steal_token = no http.secret_key = FastDFS1234567890 tracker_server = 100.98.22.253:22122 #如果有多臺服務,指定集羣的IP #tracker_server = 192.168.10.250:22122
6、測試fastDFS 上傳、下載、刪除、獲取文件信息
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
-
- import org.csource.common.NameValuePair;
- import org.csource.fastdfs.ClientGlobal;
- import org.csource.fastdfs.FileInfo;
- import org.csource.fastdfs.StorageClient;
- import org.csource.fastdfs.StorageClient1;
- import org.csource.fastdfs.StorageServer;
- import org.csource.fastdfs.TrackerClient;
- import org.csource.fastdfs.TrackerServer;
- import org.junit.Test;
-
- public class TestFastDfs {
-
- //fdfs_client 核心配置文件
- public String conf_filename = "src/main/resources/fdfs_client.conf";
-
- @Test
- public void testUpload() { //上傳文件
- TrackerServer trackerServer =null;
- StorageServer storageServer = null;
-
- try {
- ClientGlobal.init(conf_filename);
- TrackerClient tracker = new TrackerClient();
- trackerServer = tracker.getConnection();
- StorageClient1 client = new StorageClient1(trackerServer, storageServer);
-
- //要上傳的文件路徑
- String local_filename = "/Users/shenwei/Desktop/1.png";
- // 這個參數可以指定,也可以不指定,如果指定了,可以根據 testGetFileMate()方法來獲取到這裏面的值
- // NameValuePair nvp [] = new NameValuePair[]{
- // new NameValuePair("age", "18"),
- // new NameValuePair("sex", "male")
- // };
-
- StorageClient storageClient = new StorageClient(trackerServer, storageServer);
- // String fileIds[] = storageClient.upload_file(local_filename, "png", nvp);
- String fileIds[] = storageClient.upload_file(local_filename, "png", null);
-
- System.out.println(fileIds.length);
- System.out.println("組名:" + fileIds[0]);
- System.out.println("路徑: " + fileIds[1]);
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(null!=storageServer) storageServer.close();
- if(null!=trackerServer) trackerServer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testDownload() { //下載文件
- TrackerServer trackerServer =null;
- StorageServer storageServer = null;
-
- try {
- String groupName = "group1";
- String filePath = "M00/00/00/ZGIW_lpujW-ADvpRAAblmT4ACuo125.png";
- ClientGlobal.init(conf_filename);
-
- TrackerClient tracker = new TrackerClient();
- trackerServer = tracker.getConnection();
-
- StorageClient storageClient = new StorageClient(trackerServer, storageServer);
- byte[] bytes = storageClient.download_file(groupName, filePath);
-
- String storePath = "/Users/shenwei/Desktop/download.png";
- OutputStream out = new FileOutputStream(storePath);
- out.write(bytes);
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(null!=storageServer) storageServer.close();
- if(null!=trackerServer) trackerServer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testGetFileInfo(){ //獲取文件信息
- TrackerServer trackerServer =null;
- StorageServer storageServer = null;
-
- try {
- String groupName = "group1";
- String filePath = "M00/00/00/ZGIW_lpujW-ADvpRAAblmT4ACuo125.png";
- ClientGlobal.init(conf_filename);
-
- TrackerClient tracker = new TrackerClient();
- trackerServer = tracker.getConnection();
-
- StorageClient storageClient = new StorageClient(trackerServer, storageServer);
- FileInfo file = storageClient.get_file_info(groupName, filePath);
- System.out.println("ip--->"+file.getSourceIpAddr());
- System.out.println("文件大小--->"+file.getFileSize());
- System.out.println("文件上傳時間--->"+file.getCreateTimestamp());
- System.out.println(file.getCrc32());
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(null!=storageServer) storageServer.close();
- if(null!=trackerServer) trackerServer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testGetFileMate(){ //獲取文件的原數據類型
- TrackerServer trackerServer =null;
- StorageServer storageServer = null;
-
- try {
- String groupName = "group1";
- String filePath = "M00/00/00/ZGIW_lpujW-ADvpRAAblmT4ACuo125.png";
- ClientGlobal.init(conf_filename);
-
- TrackerClient tracker = new TrackerClient();
- trackerServer = tracker.getConnection();
-
- StorageClient storageClient = new StorageClient(trackerServer,
- storageServer);
-
- //這個值是上傳的時候指定的NameValuePair
- NameValuePair nvps [] = storageClient.get_metadata(groupName, filePath);
- if(null!=nvps && nvps.length>0){
- for(NameValuePair nvp : nvps){
- System.out.println(nvp.getName() + ":" + nvp.getValue());
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(null!=storageServer) storageServer.close();
- if(null!=trackerServer) trackerServer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testDelete(){ //刪除文件
- TrackerServer trackerServer =null;
- StorageServer storageServer = null;
-
- try {
- String groupName = "group1";
- String filePath = "M00/00/00/ZGIW_lpujW-ADvpRAAblmT4ACuo125.png";
- ClientGlobal.init(conf_filename);
-
- TrackerClient tracker = new TrackerClient();
- trackerServer = tracker.getConnection();
-
- StorageClient storageClient = new StorageClient(trackerServer,
- storageServer);
- int i = storageClient.delete_file(groupName, filePath);
- System.out.println( i==0 ? "刪除成功" : "刪除失敗:"+i);
- } catch (Exception e) {
- e.printStackTrace();
- } finally{
- try {
- if(null!=storageServer) storageServer.close();
- if(null!=trackerServer) trackerServer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }