FastDFS分布文件系统Java客户端使用
原文链接: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客户端使用相关推荐
- FastDFS分布文件系统
FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.具体情况大家可以看相关的介绍文档,包括 ...
- FastDFS分布式文件系统详解
FastDFS 简介 FastDFS 是基于 C 语言开发的,是一个轻量级开源的高性能分布式文件系统.主要功能有:文件存储.文件同步.文件访问(文件上传/下载),解决了大容量的文件存储和高并发访问的问 ...
- FastDFS分布式文件系统(详细入门级介绍)
分布式文件系统 (Distributed File System) 是一个软件/软件服务器: 这个软件可以用来管理文件: 但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些 ...
- 从入门到精通(分布式文件系统架构)-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端
从入门到精通-分布式文件系统架构-FastDFS,FastDFS-Nginx整合,合并存储,存储缩略图,图片压缩,Java客户端 一.FastDFS介绍 二.流程图 FastDFS架构原理分析(重点) ...
- linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
FastDFS 服务端安装参考文章:分布式文件系统之 FastDFS 安装 FastDFS Java 客户端 先从 GitHub 上将项目源码克隆下来: $ git clone https://git ...
- fastd java下载_配置 FastDFS Java 客户端
本节视频 创建项目 创建一个名为 myshop-service-upload 的服务提供者项目 安装 FastDFS Java 客户端 从 GitHub 克隆源码 git clone https:// ...
- fastdfs java上传文件_FastDFS java客户端文件上传demo
FastDFS不多讲,直接上java调用代码,以下代码是一个spring mvc中一个完整的上传请求,请参阅 @RequestMapping(value = "/upload", ...
- java调用fastdfs分布式文件系统
架构图 上传流程 client询问tracker上传到的 storage,不需要附加参数: tracker返回一台可用的storage: client直接和storage 通讯完成文件上传 下载流程 ...
- fastdfs java客户端_FastDFS的Java客户端访问
FastDFS的Java客户端访问: 没前奏,直接上车. 1. 引入依赖: net.oschina.zcx7878 fastdfs-client-java 1.27.0.0 2.在项目resource ...
- FastDFS的Java客户端无法使用maven依赖和undefined for the type TrackerClient异常问题
1. FastDFS的Java客户端无法使用maven依赖 可以使用以下依赖 <dependency> <groupId>net.oschina.zcx7878</gro ...
最新文章
- Ryzen 4000 Vermeer CPU和Radeon RX Big Navi 图形卡
- 自己挖的坑自己填--docker创建实例出现Waiting for SSH to be available…
- (笔记)Linux服务器中判断客户端socket断开连接的方法
- java 根据类名示例化类_Java LocalDateTime类| atOffset()方法与示例
- 漫步数学分析番外五(上)
- 内网信息安全厂商对客户的误导
- ORB-SLAM2初步(跟踪模块)
- 什么是今日头条下拉词下拉框?
- Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014
- 计算机网络之网络安全基础-网络安全概述
- 就业管理系统【软件建模与分析UML课设】
- 小学思维导图免费模板合集!家长必收藏
- cadence17.2安装教程
- 测度论与概率论基础学习笔记8——3.2积分的性质
- github:配置ssh密钥
- 7-8 哈利·波特的考试,7-9 旅游规划,7-10 公路村村通
- java tongpaiyu danliantiao_Java Pinyin.cou4方法代碼示例
- phpstudy安装和使用
- MATLAB中符号运算和数值运算的区别
- 错误 LNK2026 模块对于 SAFESEH 映像是不安全的。