天天看点

java操作FastDFS客户端

maven依赖

<dependency>
   <groupId>org.csource</groupId>
   <artifactId>fastdfs-client-java</artifactId>
   <version>1.29-SNAPSHOT</version>
</dependency>
           

fastDFS配置文件(本示例放在resources目录下文件名叫fdfs_client.conf)

connect_timeout = 10
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
http.secret_key = FASTDFS1234567890
tracker_server = 192.168.179.137:22122
           

 工具类

/**
 * @description: FastDFS工具类
 * @author: dayibalang
 * @time: 2020/7/22 9:18
 */
public class FastDFSUtil {



    private static Logger logger = LoggerFactory.getLogger(FastDFSUtil.class);

    private static final String CONF_FILENAME =  "fdfs_client.conf";

    static {
        String filePath = (FastDFSUtil.class.getClass().getResource("/").getPath()+CONF_FILENAME).replaceAll("//","\\");
        try {
            ClientGlobal.init(filePath);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }

    /**
    * 功能描述:文件上传
    * @author dayibalang
    * @date 2020/7/22
    * @param file
    * @return java.lang.String
    */
    public static String uploadFile(File file) throws IOException, MyException{
        FileInputStream fis = null;
        NameValuePair[] meta_list = null;
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        fis = new FileInputStream(file);
        byte[] file_buff = null;
        if (fis != null) {
            int len = fis.available();
            file_buff = new byte[len];
            fis.read(file_buff);
        }
        String fileId = storageClient.upload_file1(file_buff, getFileExt(file.getName()), meta_list);
        return fileId;
    }

    /**
    * 功能描述:文件下载
    * @author dayibalang
    * @date 2020/7/22
    * @param fileId
    * @return java.io.InputStream
    */
    public static InputStream downloadFile(String fileId) throws IOException, MyException {
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        byte[] bytes = storageClient.download_file1(fileId);
        InputStream inputStream = new ByteArrayInputStream(bytes);
        inputStream.close();
        return inputStream;
    }



    /**
    * 功能描述:获取文件名后缀(不包含点)
    * @author dayibalang
    * @date 2020/7/22
    * @param fileName
    * @return java.lang.String
    */
    private static String getFileExt(String fileName) {
        if (fileName == null || !fileName.contains(".")) {
            return "";
        } else {
            return fileName.substring(fileName.lastIndexOf(".") + 1); // 不带最后的点
        }
    }


    /**
    * 功能描述: 删除文件
    * @author dayibalang
    * @date 2020/7/22
    * @param fileId
    * @return int
    */
    public static int deleteFile(String fileId) throws IOException, MyException {
        TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
        TrackerServer trackerServer = trackerClient.getTrackerServer();
        StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
        StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer);
        int result = storageClient.delete_file1(fileId);
        return result;
    }

}
           

测试代码

public class App {
    public static void main( String[] args ) throws IOException {

        // 测试上传
        String s = FastDFSUtil.uploadFile(new File("C:\\Users\\px\\Desktop\\3.png"));
        System.out.println(s);

        //测试下载
        InputStream inputStream = FastDFSUtil.downloadFile("group1/M00/00/00/wKizjV8YJe6AUzMLAAL3YEsRLGg666.png");
        File file = new File("E:/666.png");
        if(!file.exists()){
            file.createNewFile();
        }
        FileOutputStream destFile = new FileOutputStream(file);
        byte[] b = new byte[1024];
        int length;
        while((length= inputStream.read(b))>0){
            destFile.write(b,0,length);
        }

        //测试删除
        int i = FastDFSUtil.deleteFile("group1/M00/00/00/wKizil8V9-mAURsvAAL3YEsRLGg573.png");
        System.out.println(i);
    }
}
           

继续阅读