原文链接:http://blog.csdn.net/xyang81/article/details/52847311

FastDFS分布式文件系统服务安装和使用请参考上一篇文章《 FastDFS分布式文件系统安装与使用(单节点)》担建环境。

官网Java客户端源代码:https://github.com/happyfish100/fastdfs-client-java

我已经将源码打包成一个jar,下载后导入到你的工程中即可。如果你是用maven管理工程,可将jar包上传到公司自己担的私服中。jar下载地址:http://download.csdn.net/detail/xyang81/9656690

我将官方提供的sdk封装了一个工具类,将工具类导入工程即可使用,如下所示:

package com.digi_zones.fdfs;import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtil;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;/*** <p>Description: FastDFS文件上传下载工具类 </p>* <p>Copyright: Copyright (c) 2016</p>** @author yangxin* @version 1.0* @date 2016/10/19*/
public class FastDFSClient {private static final String CONFIG_FILENAME = "src/main/resources/fdfs/fdfs_client.conf";private static StorageClient1 storageClient1 = null;// 初始化FastDFS Clientstatic {try {ClientGlobal.init(CONFIG_FILENAME);TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);TrackerServer trackerServer = trackerClient.getConnection();if (trackerServer == null) {throw new IllegalStateException("getConnection return null");}StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);if (storageServer == null) {throw new IllegalStateException("getStoreStorage return null");}storageClient1 = new StorageClient1(trackerServer,storageServer);} catch (Exception e) {e.printStackTrace();}}/*** 上传文件* @param file 文件对象* @param fileName 文件名* @return*/public static String uploadFile(File file, String fileName) {return uploadFile(file,fileName,null);}/*** 上传文件* @param file 文件对象* @param fileName 文件名* @param metaList 文件元数据* @return*/public static String uploadFile(File file, String fileName, Map<String,String> metaList) {try {byte[] buff = IOUtil.toByteArray(new FileInputStream(file));NameValuePair[] nameValuePairs = null;if (metaList != null) {nameValuePairs = new NameValuePair[metaList.size()];int index = 0;for (Iterator<Map.Entry<String,String>> iterator = metaList.entrySet().iterator(); iterator.hasNext();) {Map.Entry<String,String> entry = iterator.next();String name = entry.getKey();String value = entry.getValue();nameValuePairs[index++] = new NameValuePair(name,value);}}return storageClient1.upload_file1(buff,FileUtils.getExtension(fileName),nameValuePairs);} catch (Exception e) {e.printStackTrace();}return null;}/*** 获取文件元数据* @param fileId 文件ID* @return*/public static Map<String,String> getFileMetadata(String fileId) {try {NameValuePair[] metaList = storageClient1.get_metadata1(fileId);if (metaList != null) {HashMap<String,String> map = new HashMap<String, String>();for (NameValuePair metaItem : metaList) {map.put(metaItem.getName(),metaItem.getValue());}return map;}} catch (Exception e) {e.printStackTrace();}return null;}/*** 删除文件* @param fileId 文件ID* @return 删除失败返回-1,否则返回0*/public static int deleteFile(String fileId) {try {return storageClient1.delete_file1(fileId);} catch (Exception e) {e.printStackTrace();}return -1;}/*** 下载文件* @param fileId 文件ID(上传文件成功后返回的ID)* @param outFile 文件下载保存位置* @return*/public static int downloadFile(String fileId, File outFile) {FileOutputStream fos = null;try {byte[] content = storageClient1.download_file1(fileId);fos = new FileOutputStream(outFile);IOUtil.copy(content,fos);return 0;} catch (Exception e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}return -1;}}

Java客户端配置文件(fdfs_client.conf):

connect_timeout = 10                    # 连接tracker服务器超时时长
network_timeout = 30                    # socket连接超时时长
charset = UTF-8                         # 文件内容编码
http.tracker_http_port = 8888           # tracker服务器端口
http.anti_steal_token = no
http.secret_key = FastDFS1234567890     tracker_server = 192.168.0.200:22122    # tracker服务器IP和端口(可以写多个)
#tracker_server = xxxx:xxx

Java客户端文件上传、下载、删除和元数据获取测试:

package com.digi_zones.fdfs;import org.junit.Test;import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;/*** <p>Description: </p>* <p>Copyright: Copyright (c) 2016</p>** @author yangxin* @version 1.0* @date 2016/10/19*/
public class FastDFSClientTest {/*** 文件上传测试*/@Testpublic void testUpload() {File file = new File("C:\\Users\\yangfang\\Pictures\\angularjs_share.jpg");Map<String,String> metaList = new HashMap<String, String>();metaList.put("width","1024");metaList.put("height","768");metaList.put("author","杨信");metaList.put("date","20161018");String fid = FastDFSClient.uploadFile(file,file.getName(),metaList);System.out.println("upload local file " + file.getPath() + " ok, fileid=" + fid);//上传成功返回的文件ID: group1/M00/00/00/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg}/*** 文件下载测试*/@Testpublic void testDownload() {int r = FastDFSClient.downloadFile("group1/M00/00/00/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg", new File("DownloadFile_fid.jpg"));System.out.println(r == 0 ? "下载成功" : "下载失败");}/*** 获取文件元数据测试*/@Testpublic void testGetFileMetadata() {Map<String,String> metaList = FastDFSClient.getFileMetadata("group1/M00/00/00/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg");for (Iterator<Map.Entry<String,String>>  iterator = metaList.entrySet().iterator(); iterator.hasNext();) {Map.Entry<String,String> entry = iterator.next();String name = entry.getKey();String value = entry.getValue();System.out.println(name + " = " + value );}}/*** 文件删除测试*/@Testpublic void testDelete() {int r = FastDFSClient.deleteFile("group1/M00/00/00/wKgAyVgFk9aAB8hwAA-8Q6_7tHw351.jpg");System.out.println(r == 0 ? "删除成功" : "删除失败");}
}

FastDFS分布文件系统Java客户端使用相关推荐

  1. FastDFS分布文件系统

    FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.具体情况大家可以看相关的介绍文档,包括 ...

  2. FastDFS分布式文件系统详解

    FastDFS 简介 FastDFS 是基于 C 语言开发的,是一个轻量级开源的高性能分布式文件系统.主要功能有:文件存储.文件同步.文件访问(文件上传/下载),解决了大容量的文件存储和高并发访问的问 ...

  3. FastDFS分布式文件系统(详细入门级介绍)

    分布式文件系统 (Distributed File System) 是一个软件/软件服务器: 这个软件可以用来管理文件: 但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些 ...

  4. 从入门到精通(分布式文件系统架构)-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端

    从入门到精通-分布式文件系统架构-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端 一.FastDFS介绍 二.流程图 FastDFS架构原理分析(重点) ...

  5. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件

    FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...

  6. fastd java下载_配置 FastDFS Java 客户端

    本节视频 创建项目 创建一个名为 myshop-service-upload 的服务提供者项目 安装 FastDFS Java 客户端 从 GitHub 克隆源码 git clone https:// ...

  7. fastdfs java上传文件_FastDFS java客户端文件上传demo

    FastDFS不多讲,直接上java调用代码,以下代码是一个spring mvc中一个完整的上传请求,请参阅 @RequestMapping(value = "/upload", ...

  8. java调用fastdfs分布式文件系统

    架构图 上传流程 client询问tracker上传到的 storage,不需要附加参数: tracker返回一台可用的storage: client直接和storage 通讯完成文件上传 下载流程 ...

  9. fastdfs java客户端_FastDFS的Java客户端访问

    FastDFS的Java客户端访问: 没前奏,直接上车. 1. 引入依赖: net.oschina.zcx7878 fastdfs-client-java 1.27.0.0 2.在项目resource ...

  10. FastDFS的Java客户端无法使用maven依赖和undefined for the type TrackerClient异常问题

    1. FastDFS的Java客户端无法使用maven依赖 可以使用以下依赖 <dependency> <groupId>net.oschina.zcx7878</gro ...

最新文章

  1. Ryzen 4000 Vermeer CPU和Radeon RX Big Navi 图形卡
  2. 自己挖的坑自己填--docker创建实例出现Waiting for SSH to be available…
  3. (笔记)Linux服务器中判断客户端socket断开连接的方法
  4. java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例
  5. 漫步数学分析番外五(上)
  6. 内网信息安全厂商对客户的误导
  7. ORB-SLAM2初步(跟踪模块)
  8. 什么是今日头条下拉词下拉框?
  9. Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014
  10. 计算机网络之网络安全基础-网络安全概述
  11. 就业管理系统【软件建模与分析UML课设】
  12. 小学思维导图免费模板合集!家长必收藏
  13. cadence17.2安装教程
  14. 测度论与概率论基础学习笔记8——3.2积分的性质
  15. github:配置ssh密钥
  16. 7-8 哈利·波特的考试,7-9 旅游规划,7-10 公路村村通
  17. java tongpaiyu danliantiao_Java Pinyin.cou4方法代碼示例
  18. phpstudy安装和使用
  19. MATLAB中符号运算和数值运算的区别
  20. 错误 LNK2026 模块对于 SAFESEH 映像是不安全的。

热门文章

  1. 南京邮电大学电子电路课程设计可编程音乐自动演奏电路
  2. ER Studio 使用笔记
  3. opencv之银行卡号识别
  4. python-math函数
  5. 芯原的神经网络处理器IP获百余款人工智能芯片采用
  6. Android音视频开发全系列教程
  7. 郝斌 mysql_郝斌–SQL Server2005学习笔记
  8. 算法导论18.1-4
  9. kali2020出现中文乱码解决
  10. 【总结】学了不少自然语言处理的理论知识,如何通过实战进一步提高能力?...