前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastDFS Java Client

FastDFS Java Client

作者头像
十毛
发布2019-03-27 15:22:34
2.2K0
发布2019-03-27 15:22:34
举报

前面一文描述了如何部署FastDFS服务器,本文在此基础上,介绍如何利用FastDFS的Java客户端与服务器交互完成文件管理

本地安装

代码语言:javascript
复制
git clone https://github.com/happyfish100/fastdfs-client-java.git
cd fastdfs-client-java
mvn clean install

添加依赖

pom.xml

代码语言:javascript
复制
<dependency>
    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27-SNAPSHOT</version>
</dependency>

配置FastDFS

fastdfs-client.properties

代码语言:javascript
复制
fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80

fastdfs.tracker_servers = 10.0.11.201:22122,10.0.11.202:22122,10.0.11.203:22122

配置加载

代码语言:javascript
复制
ClientGlobal.initByProperties("fastdfs-client.properties");
String configInfo = ClientGlobal.configInfo();
System.out.println(configInfo);

FastDFS API

  • 文件上传:upload_file
  • 文件下载:download_file
  • 文件信息:get_file_info
  • 用户自定义元信息:get_metadata
  • 删除文件:delete_file
代码语言:javascript
复制
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.junit.Assert;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class TestFastDfs {
    private static final String FASTDFS_CLIENT_PROPERTIES = "fastdfs-client.properties";
    private static String dfsFileName = "M00/00/00/wKg6ZVyM1dKAeC7_AAADxVvVFj019.java";

    @Test
    public void testUpload() throws Exception {    //上传文件
        TrackerServer trackerServer = null;
        try {
            ClientGlobal.initByProperties(FASTDFS_CLIENT_PROPERTIES);
            TrackerClient tracker = new TrackerClient();
            trackerServer = tracker.getConnection();
            String local_filename = "F://Debug.java";

            StorageClient storageClient = new StorageClient(trackerServer, null);
            NameValuePair valuePair = new NameValuePair();
            valuePair.setName("name");
            valuePair.setValue("tenmao test");
            NameValuePair[] pairs = {valuePair};
            String[] fileIds = storageClient.upload_file(local_filename, null, pairs);

            System.out.println("组名:" + fileIds[0]);
            System.out.println("路径: " + fileIds[1]);
        } finally {
            try {
                if (null != trackerServer) {
                    trackerServer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void testDownload() throws Exception {    //下载文件
        TrackerServer trackerServer = null;

        try {
            String groupName = "group1";
            String filePath = dfsFileName;
            ClientGlobal.initByProperties(FASTDFS_CLIENT_PROPERTIES);

            TrackerClient tracker = new TrackerClient();
            trackerServer = tracker.getConnection();

            StorageClient storageClient = new StorageClient(trackerServer, null);
            byte[] bytes = storageClient.download_file(groupName, filePath);

            Assert.assertNotNull(bytes);
            String storePath = "F://hello.java";
            try (OutputStream out = new FileOutputStream(storePath)) {
                out.write(bytes);
            }
        } finally {
            try {
                if (null != trackerServer) trackerServer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void testGetFileInfo() { //获取文件信息
        TrackerServer trackerServer = null;

        try {
            String groupName = "group1";
            String filePath = dfsFileName;
            ClientGlobal.initByProperties(FASTDFS_CLIENT_PROPERTIES);

            TrackerClient tracker = new TrackerClient();
            trackerServer = tracker.getConnection();

            StorageClient storageClient = new StorageClient(trackerServer, null);
            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 != trackerServer) trackerServer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void testGetFileMate() throws Exception { //获取文件的原数据类型
        TrackerServer trackerServer = null;

        try {
            String groupName = "group1";
            String filePath = dfsFileName;
            ClientGlobal.initByProperties(FASTDFS_CLIENT_PROPERTIES);

            TrackerClient tracker = new TrackerClient();
            trackerServer = tracker.getConnection();

            StorageClient storageClient = new StorageClient(trackerServer, null);

            //这个值是上传的时候指定的NameValuePair
            NameValuePair[] pairs = storageClient.get_metadata(groupName, filePath);
            if (null != pairs && pairs.length > 0) {
                for (NameValuePair nvp : pairs) {
                    System.out.println(nvp.getName() + ":" + nvp.getValue());
                }
            }
        } finally {
            try {
                if (null != trackerServer) trackerServer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void testDelete() throws Exception { //删除文件
        TrackerServer trackerServer = null;

        try {
            String groupName = "group1";
            String filePath = dfsFileName;
            ClientGlobal.initByProperties(FASTDFS_CLIENT_PROPERTIES);

            TrackerClient tracker = new TrackerClient();
            trackerServer = tracker.getConnection();

            StorageClient storageClient = new StorageClient(trackerServer, null);
            int i = storageClient.delete_file(groupName, filePath);
            System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
        } finally {
            try {
                if (null != trackerServer) trackerServer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本地安装
  • 添加依赖
  • 配置FastDFS
  • 配置加载
  • FastDFS API
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档