Java SpringBoot最简单的FastDFS使用教学(包括上传和下载测试类)

这篇博客详细介绍了如何在Java SpringBoot项目中集成并使用FastDFS进行文件的上传和下载。首先,通过手动下载并安装FastDFS的jar包到本地maven仓库。接着,配置pom.xml文件,避免版本冲突。然后,在application-dev.properties中设置FastDFS的相关配置。最后,提供了上传和下载的测试类代码,成功运行测试类可验证FastDFS的集成效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java SpringBoot最简单的FastDFS使用教学(包括上传和下载测试类)

上周为了写一个FastDFS的上传和下载的接口焦头烂额,疯狂百度,但是每个人的代码结构和编程风格都不一样,导致学习过程举步维艰,但是只要搞明白了原理还是挺简单的。

FastDFS的原理和配置我就不再赘述了,可以参考下面链接的教程,很细致
FastDFS完整配置教程

首先来引入jar包,maven中心仓库没有fdfs的jar包,需要手动下载引用,下载地址fastdfs jar包下载地址

下载压缩包后,解压,运行cmd,进入解压缩目录,输入mvn clean install,提示BUILD SUCCESS就表示已经成功将jar包下载到电脑的maven仓库中了。
(注意:这一步需要电脑中配置maven环境变量)

接下来进入pom.xml中进行引用,代码如下,我这里取消了对org.slf4j的引用是因为spring boot已经自带一个slf4j的版本,再次引用会导致运行报错。

<dependency>
			<groupId>org.csource</groupId>
			<artifactId>fastdfs-client-java</artifactId>
			<version>1.27-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

然后在配置文件中写入FastDFS的配置信息,我这里的配置文件名是application-dev.properties,写在哪里无所谓,后面会提到,配置如下

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=1234//注意与配置文件要一致!!!
tracker_server=49.7.59.236:22122//注意与配置文件要一致!!!

接下来就是最重要的,测试类

上传测试类:

public static void main(String[] args) throws Exception {
        // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址,具体指定哪个配置文件可以自己修改。
        try {
            ClassPathResource cpr = new ClassPathResource("application-dev.properties");
            ClientGlobal.init(cpr.getClassLoader().getResource("application-dev.properties").getPath());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        // 2、创建一个 TrackerClient 对象。直接 new 一个。
        TrackerClient trackerClient = new TrackerClient();
        // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。
        TrackerServer trackerServer = null;
        try {
            trackerServer = trackerClient.getConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 4、创建一个 StorageServer 的引用,值为 null
        StorageServer storageServer = null;
        // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        // 6、使用 StorageClient 对象上传图片。
        // 扩展名不带“.”
        String[] strings = new String[0];
        try {
        //fastdfs的引用最主要的就是这一句,其中引入的三个变量分别为本地文件路径,文件后缀名和标签,最后一个这里忽略
          strings = storageClient.upload_file("C:/Users/39600/Desktop/agent.txt", "txt", null);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        // 7、返回数组。包含组名和图片的路径。
        for (String string : strings) {
            System.out.println(string);
        }

    }

写好后直接右键运行这个类,如果控制台打印文件保存路径就表示成功了,如果出错可以再检查一下配置文件是否正确以及是否读取了正确的配置文件。这一套方法可以在任何地方取用。

接下来是下载测试类

public static void main(String[] args) throws Exception {
        // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。
        try {

            ClassPathResource cpr = new ClassPathResource("application-dev.properties");
//            ClassLoader a = cpr.getClassLoader();
//            URL b = cpr.getClassLoader().getResource("fdfs_client.conf");
            ClientGlobal.init(cpr.getClassLoader().getResource("application-dev.properties").getPath());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        // 2、创建一个 TrackerClient 对象。直接 new 一个。
        TrackerClient trackerClient = new TrackerClient();
        // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。
        TrackerServer trackerServer = null;
        try {
            trackerServer = trackerClient.getConnection();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 4、创建一个 StorageServer 的引用,值为 null
        StorageServer storageServer = null;
        // 5、创建一个 StorageClient1 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用。注意这里是StorageClient1 ,和上面的StorageClient不同,能够饮用的方法也有区别。
        StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
        // 6、使用 StorageClient 对象下载文件。
        String[] strings = new String[0];
        try {
        //首先调用download_file1方法,将文件读取为字节流
            byte[] by = storageClient1.download_file1("group1/M00/00/00/ChQFBl2_hIKAGAuOAAAwZm1Ouq4254.jpg");
            //变量获取一下文件名称
            String fileName = getFileName("group1/M00/00/00/ChQFBl2_hIKAGAuOAAAwZm1Ouq4254.jpg");
            //在本地路径创建一个与文件名相同的文件
            OutputStream os = new FileOutputStream("D:\\test\\" + fileName);
            //将文件字节流写入到创建的文件中
            os.write(by, 0, by.length);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
        // 7、返回数组。包含组名和图片的路径。
        for (String string : strings) {
            System.out.println(string);
        }

    }

运行后在指定路径查看,下载成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值