Java实现FastDFS文件上传、下载和删除

FastDFS基于Java对文件进行上传、下载和删除

前期准备

  1. 需要下载FastDFS的官方源代码https://codeload.github.com/happyfish100/fastdfs-client-java/zip/master到本地。
  2. 下载成功后将源代码打包成jar包放入Maven仓库
  3. 服务器有FastDFS环境并且已经启动
  4. 如果像要在外部浏览器上访问到传文件的内容,需要在服务器中配置FastDFS提供的一个Nginx扩展模块

具体实现

  1. 新建一个Maven工程在pom.xml文件导入FastDFS源码编译成的jar包
		<dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27-SNAPSHOT</version>
        </dependency>
  1. 在resources文件下新建fastdfs.conf文件并编写
tracker_server=服务器地址:22122 //表示tracker的地址和端口如果是集群有多个就继续往下写
  1. 文件上传(upload)代码具体实现
 //文件上传
    private static void upload() {
        TrackerServer ts = null;
        StorageServer ss = null;
        try {
            //读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
            ClientGlobal.init("fastdfs.conf");
            TrackerClient tc = new TrackerClient();
            ts = tc.getConnection();
            ss = tc.getStoreStorage(ts);
            //定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
            StorageClient sc = new StorageClient(ts,ss);
            //文件上传
            //参数一 需要上传的文件的绝对路径
            //参数二 为需要上传的文件的扩展名
            //参数三 为文件的属性文件通常不上传
            //返回一个String数组 这个数据对我们非常重要,建议存入数据库
            //返回值,一个是组名,一个是上传文件存储在的目录
            String[] result = sc.upload_appender_file("d:/a.jpg","jpg",null);
            for (String str:result) {
                System.out.println(str);
            }
        } catch (IOException | MyException e) {
            e.printStackTrace();
        } finally {
           if (ss != null){
               try {
                   ss.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
           if (ts != null){
               try {
                   ts.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
        }
    }
  1. 文件下载(download)的具体实现
 //文件下载
    private static void download() {
        TrackerServer ts = null;
        StorageServer ss = null;
        try {
            //读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
            ClientGlobal.init("fastdfs.conf");
            TrackerClient tc = new TrackerClient();
            ts = tc.getConnection();
            ss = tc.getStoreStorage(ts);
            //定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
            StorageClient sc = new StorageClient(ts,ss);
            //文件下载
            //参数一 需要下载的文件的组名
            //参数二 需要下载文件的远程文件名
            //参数三 需要保存到本地的文件名称
            //返回一个int类型的数据,返回0表示文件下载成功其它值表示文件下载失败
            String groupName = "group1";
            String remoteName = "M00/00/00/sBRcHmDIlLCEDtsjAAAAAE_bs3A176.png";
            String localFileName = "d:/download.png";
            int i = sc.download_file(groupName, remoteName,localFileName);
            System.out.println(i);
        } catch (IOException | MyException e) {
            e.printStackTrace();
        } finally {
            if (ss != null){
                try {
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (ts != null){
                try {
                    ts.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  1. 文件删除(delete)的具体实现
 private static void delete() {
        TrackerServer ts = null;
        StorageServer ss = null;
        try {
            //读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
            ClientGlobal.init("fastdfs.conf");
            TrackerClient tc = new TrackerClient();
            ts = tc.getConnection();
            ss = tc.getStoreStorage(ts);
            //定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
            StorageClient sc = new StorageClient(ts,ss);
            //文件下载
            //参数一 需要删除的文件的组名
            //参数二 需要删除文件的远程文件名
            //返回一个int类型的数据,返回0表示文件删除成功其它值表示文件删除失败
            String groupName = "group1";
            String remoteName = "M00/00/00/sBRcHmDIlLCEDtsjAAAAAE_bs3A176.png";
            int i = sc.delete_file(groupName,remoteName);
            System.out.println(i);
        } catch (IOException | MyException e) {
            e.printStackTrace();
        } finally {
            if (ss != null){
                try {
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (ts != null){
                try {
                    ts.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

测试

文件上传测试结果

上传文件

在外部浏览器访问这个文件通过组名和位置访问
访问图片

测试下载

文件下载
返回0表示下载成功

测试删除

文件删除
返回0表示删除成功

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值