使用java調用fastDFS客戶端進行靜態資源文件上傳

1、背景

  上篇博客我介紹了FastDFS的概念、原理以及安裝步驟,這篇文章咱們來聊一聊如何在java中使用FastDFSClient進行靜態資源的上傳。java

2、使用步驟

  1.開發環境spring

    spring+springmvc+maven服務器

  2.首先在maven的pom.xml中引入依賴fastdfs-client的依賴mvc

1 <dependency>
2    <groupId>org.csource</groupId>
3    <artifactId>fastdfs-client-java</artifactId>
4    <version>5.0.4</version>
5 </dependency>

  3.接着咱們來指定一個fastdfs-client.conf配置文件,裏面內容以下:maven

    tracker_server=host:port(這裏指trackerServer服務器的ip和端口)單元測試

  4.而後寫一個單元測試類來測試服務測試

package com.hafiz.fastdfs;

import java.io.FileNotFoundException;
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;
import org.junit.Test;

import com.taotao.common.utils.FastDFSClient;

public class FastdfsTest {
    
    private static final String CONFIGLOCATION = "D:\\fastdfs_client.conf";

    @Test
    public void testUploadImg () {
        try {
            // 初始化全局配置。加載client配置文件
            ClientGlobal.init(CONFIGLOCATION);
            // 建立一個TrackerClient對象
            TrackerClient trackerClient = new TrackerClient();
            // 建立一個TrackerServer對象
            TrackerServer trackerServer = trackerClient.getConnection();
            // 聲明一個StorageServer對象並初始爲null
            StorageServer storageServer = null;
            // 得到StorageClient對象
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            // 直接調用StorageClient對象方法上傳文件便可
            String[] result = storageClient.upload_file("D:\\Documents\\Downloads\\高圓圓2.jpg", "jpg", null);
            for(String item : result) {
                System.out.println(item);
            }
            trackerServer.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void fastDfsClientTest() {
        try {
            FastDFSClient client = new FastDFSClient(CONFIGLOCATION);
            String imgUrl = client.uploadFile("D:\\Documents\\Downloads\\高圓圓1.jpg", "jpg", null);
            System.out.println(imgUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  5.爲了之後在項目中使用方便,咱們不能每次都寫這麼一大串東西,因此咱們來對該客戶端進行如下封裝:this

package com.hafiz.common.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:")) {
            String url = this.getClass().getResource("/").getPath();
            url = url.substring(1);
            conf = conf.replace("classpath:", url);
        }
        ClientGlobal.init(conf);
        trackerClient = new TrackerClient();
        trackerServer = trackerClient.getConnection();
        storageServer = null;
        storageClient = new StorageClient1(trackerServer, storageServer);
    }

    public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
        return storageClient.upload_file1(fileName, extName, metas);
    }
    public String uploadFile(String fileName, String extName) throws Exception {
        return storageClient.upload_file1(fileName, extName, null);
    }

    public String uploadFile(String fileName) throws Exception {
        return storageClient.upload_file1(fileName, null, null);
    }
    public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
        return storageClient.upload_file1(fileContent, extName, metas);
    }
    public String uploadFile(byte[] fileContent, String extName) throws Exception {
        return storageClient.upload_file1(fileContent, extName, null);
    }
    public String uploadFile(byte[] fileContent) throws Exception {
        return storageClient.upload_file1(fileContent, null, null);
    }

}

3、總結

  經過以上的步驟,咱們就完成在java中使用fastdfs客戶端進行靜態資源上傳的功能,這裏面咱們獲得一個最重要的思想就是:DRY(Don't Repeat Yourself!),要有封裝的思想。url

相關文章
相關標籤/搜索