Java操作FastDFS

1.下载编译

GitHub:https://codeload.github.com/happyfish100

Gitee:https://gitee.com/fastdfs100

如:本文使用gitee做演示

 

使用命令: git clone 地址  下载 或者直接下限压缩包进行解压

maven编译:mvn clean install

注:如果本地没有安装配置maven可以使用idea自带的进行编译

2.pom.xml

注:这边使用maven进行演示,如果不使用maven可以将编译后的jar导入Java项目,效果一样

引入FastDFS的Maven的依赖包:

<! -- 注:这个依赖没有出现在Maven的中央库中,需要要对源码进行编译将客户端的代码

    编译到maven的本地库中或直接拷贝依赖包文件到本地Maven库中 -->

<dependencies>

    <dependency>

        <groupId>org.csource</groupId>

        <artifactId>fastdfs-client-java</artifactId>

        <version>1.29-SNAPSHOT</version>

    </dependency>

</dependencies>

3.配置

在resources下新建fastdfs.conf:

配置:

#连接超时,单位秒

connect_timeout=10

#网络超时,单位秒

network_timeout=30

#字符集设置

charset=UTF-8

# tracker server 的访问 IP 和 Port。

tracker_server=192.168.154.130:22122

4.编写测试代码


import org.csource.fastdfs.*;
import java.io.IOException;

public class FastDFSUtils {

    public static final String CONF_FILENAME  = "fastdfs.conf"; //配置文件
    public static final String URL            = "http://192.168.154.128"; //访问路径

    public static final String IMG_PATH       = "D:\\Pictures\\9.jpg";  //测试文件上传
    public static final String FILE_EXTNAME   = "jpg";                  //测试扩展名

    public static final String DOWNLOAD       = "D:\\Pictures\\test.jpg"; //下载

    public static void main(String[] args) {
        //上传
        String[] upload = upload(IMG_PATH, FILE_EXTNAME);
        String path = pathSplicing(upload);
        System.out.println(path);
        //下载
        int download = download(upload[0], upload[1], DOWNLOAD);
        System.out.println(download == 0 ? "成功" : "失败");
        //删除
        int delete = delete(upload[0], upload[1]);
        System.out.println(delete == 0 ? "成功" : "失败");
    }

    /**
     * 文件删除
     * @param groupName 文件组名
     * @param filename 文件路径
     * @return 返回值:0:成功, 其他:失败
     */
    private static int delete(String groupName, String filename) {
        StorageClient sc = null;
        int result = -1;
        try {
            //初始化,读取配置文件
            ClientGlobal.init(CONF_FILENAME);
            TrackerClient tc = new TrackerClient();
            TrackerServer ts = tc.getTrackerServer();
            StorageServer ss = tc.getStoreStorage(ts);
            //操作文件
            sc = new StorageClient(ts,ss);
            //组名,文件名
            result = sc.delete_file(groupName, filename);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(sc!=null){
                try {
                    sc.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }

    /**
     * 文件下载
     * @param groupName 下载文件组名
     * @param image 下载文件路径
     * @param downloadPath 保存地址/文件名
     * @return 返回值:0:成功, 其他:失败
     */
    private static int download(String groupName, String image, String downloadPath) {
        StorageClient sc = null;
        int result = -1;
        try {
            //初始化,读取配置文件
            ClientGlobal.init(CONF_FILENAME);
            TrackerClient tc = new TrackerClient();
            TrackerServer ts = tc.getTrackerServer();
            StorageServer ss = tc.getStoreStorage(ts);
            //操作文件
            sc = new StorageClient(ts,ss);
            //下载文件组名, 下载文件路径,  保存路径/文件名
            result = sc.download_file(groupName, image, downloadPath);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(sc!=null){
                try {
                    sc.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }


    /**
     * 文件上传
     * @param imgPath 文件路径
     * @param fileExtName 文件扩展名
     * @return 返回值:[0]:组名, [1]:路径
     */
    public static String[] upload(String imgPath, String fileExtName) {
        StorageClient sc = null;
        String[] result  = null;
        try {
            //初始化,读取配置文件
            ClientGlobal.init(CONF_FILENAME);
            TrackerClient tc = new TrackerClient();
            TrackerServer ts = tc.getTrackerServer();
            StorageServer ss = tc.getStoreStorage(ts);
            //操作文件
            sc = new StorageClient(ts,ss);
            //文件绝对路径, 文件扩展名, 属性文件(不做上传),
            result = sc.upload_appender_file(imgPath, fileExtName, null);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(sc!=null){
                try {
                    sc.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }

    /**
     * 路径拼接
     * @param result 数组:[0]:组名, [1]:路径
     * @return 文件访问路径
     */
    public static String pathSplicing(String [] result) {
        String path = "";
        try {
            if (result != null && result.length > 0) {
                StringBuilder url = new StringBuilder();
                url.append(URL);
                for(String str:result){
                    url.append("/");
                    url.append(str);
                }
                path = url.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return path;
    }
}

注:如果出现超时或者连接问题,检查端口是否开放

开发端口

sudo firewall-cmd --add-port=80/tcp --permanent

sudo firewall-cmd --add-port=22122/tcp --permanent

sudo firewall-cmd --add-port=23000/tcp --permanent

重启防火墙

firewall-cmd --reload

说明:

nginx: 80

tracker_server: 22122

trackerd: 23000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 实现 FastDFS 的步骤如下: 1. 引入 FastDFS 客户端 SDK。可以通过 Maven 等方式引入 FastDFS 客户端 SDK,例如: ```xml <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.1</version> </dependency> ``` 2. 配置 FastDFS 客户端。创建一个配置文件 `fdfs_client.conf`,用于配置 FastDFS 客户端的连接地址、超时时间、线程池大小等参数,例如: ```ini # 连接超时时间(单位:秒) connect_timeout=5 # 网络超时时间(单位:秒) network_timeout=30 # 字符集 charset=UTF-8 # HTTP协议请求端口号 http.tracker_http_port=8080 # Tracker服务器列表 tracker_server=192.168.0.1:22122 tracker_server=192.168.0.2:22122 # Tracker服务器连接池最大数量 tracker_http_conn_pool_max_count=10 ``` 3. 初始化 FastDFS 客户端。在 Java 代码中初始化 FastDFS 客户端,例如: ```java // 定义配置文件路径 String configFile = "fdfs_client.conf"; // 创建 FastDFS 客户端 ClientGlobal.init(configFile); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient1 storageClient = new StorageClient1(trackerServer, storageServer); ``` 4. 上传文件FastDFS。使用 FastDFS 客户端上传文件,例如: ```java // 定义文件字节数组 byte[] fileBytes = ...; // 定义文件扩展名 String fileExtName = "jpg"; // 上传文件 String fileId = storageClient.upload_file1(fileBytes, fileExtName, null); ``` 其中,`fileId` 即为上传后的文件 ID,可以根据此 ID 获取文件下载链接和删除文件操作。 5. 下载文件或获取文件访问链接。使用 FastDFS 客户端下载文件或获取文件访问链接,例如: ```java // 下载文件 byte[] fileBytes = storageClient.download_file1(fileId); // 获取文件访问链接 String fileUrl = "http://192.168.0.1:8080/" + fileId; ``` 6. 删除文件。使用 FastDFS 客户端删除文件,例如: ```java // 删除文件 int result = storageClient.delete_file1(fileId); ``` 以上就是使用 Java 实现 FastDFS 的基本步骤,需要注意的是,上传文件前需要先启动 FastDFS 的 Tracker 和 Storage 服务,并在客户端配置文件中设置相应的服务地址和端口号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值