前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用java调用fastDFS客户端进行静态资源文件上传

使用java调用fastDFS客户端进行静态资源文件上传

作者头像
阿豪聊干货
发布2018-08-09 10:19:47
1.6K0
发布2018-08-09 10:19:47
举报
文章被收录于专栏:Java后端技术Java后端技术

一、背景

  上篇博客我介绍了FastDFS的概念、原理以及安装步骤,这篇文章我们来聊一聊如何在java中使用FastDFSClient进行静态资源的上传。

二、使用步骤

  1.开发环境

    spring+springmvc+maven

  2.首先在maven的pom.xml中引入依赖fastdfs-client的依赖

代码语言:javascript
复制
1 <dependency>
2    <groupId>org.csource</groupId>
3    <artifactId>fastdfs-client-java</artifactId>
4    <version>5.0.4</version>
5 </dependency>

  3.接着我们来指定一个fastdfs-client.conf配置文件,里面内容如下:

    tracker_server=host:port(这里指trackerServer服务器的ip和端口)

  4.然后写一个单元测试类来测试服务

代码语言:javascript
复制
package com.hafiz.fastdfs;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;

import com.taotao.common.utils.FastDFSClient;

public class FastdfsTest {
    
    private static final String CONFIGLOCATION = "D:\\fastdfs_client.conf";

    @Test
    public void testUploadImg () {
        try {
            // 初始化全局配置。加载client配置文件
            ClientGlobal.init(CONFIGLOCATION);
            // 创建一个TrackerClient对象
            TrackerClient trackerClient = new TrackerClient();
            // 创建一个TrackerServer对象
            TrackerServer trackerServer = trackerClient.getConnection();
            // 声明一个StorageServer对象并初始为null
            StorageServer storageServer = null;
            // 获得StorageClient对象
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            // 直接调用StorageClient对象方法上传文件即可
            String[] result = storageClient.upload_file("D:\\Documents\\Downloads\\高圆圆2.jpg", "jpg", null);
            for(String item : result) {
                System.out.println(item);
            }
            trackerServer.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void fastDfsClientTest() {
        try {
            FastDFSClient client = new FastDFSClient(CONFIGLOCATION);
            String imgUrl = client.uploadFile("D:\\Documents\\Downloads\\高圆圆1.jpg", "jpg", null);
            System.out.println(imgUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  5.为了以后在项目中使用方便,我们不能每次都写这么一大串东西,所以我们来对该客户端进行以下封装:

代码语言:javascript
复制
package com.hafiz.common.utils;

import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;

public class FastDFSClient {
    
    private TrackerClient trackerClient = null;
    private TrackerServer trackerServer = null;
    private StorageServer storageServer = null;
    private StorageClient1 storageClient = null;

    public FastDFSClient(String conf) throws Exception {

        if (conf.contains("classpath:")) {
            String url = this.getClass().getResource("/").getPath();
            url = url.substring(1);
            conf = conf.replace("classpath:", url);
        }
        ClientGlobal.init(conf);
        trackerClient = new TrackerClient();
        trackerServer = trackerClient.getConnection();
        storageServer = null;
        storageClient = new StorageClient1(trackerServer, storageServer);
    }

    public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
        return storageClient.upload_file1(fileName, extName, metas);
    }
    public String uploadFile(String fileName, String extName) throws Exception {
        return storageClient.upload_file1(fileName, extName, null);
    }

    public String uploadFile(String fileName) throws Exception {
        return storageClient.upload_file1(fileName, null, null);
    }
    public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
        return storageClient.upload_file1(fileContent, extName, metas);
    }
    public String uploadFile(byte[] fileContent, String extName) throws Exception {
        return storageClient.upload_file1(fileContent, extName, null);
    }
    public String uploadFile(byte[] fileContent) throws Exception {
        return storageClient.upload_file1(fileContent, null, null);
    }

}

三、总结

  通过以上的步骤,我们就完成在java中使用fastdfs客户端进行静态资源上传的功能,这里面我们得到一个最重要的思想就是:DRY(Don't Repeat Yourself!),要有封装的思想。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、使用步骤
  • 三、总结
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档