1. 命令行api介绍

FastDFS提供了可用于运维测试的命令行api,下面进行介绍:

1.1 fastdfs服务管理

  1. tracker进程服务管理脚本
 /etc/init.d/fdfs_trackerd [start|stop|restart]
  1. storage进程服务管理脚本
/etc/init.d/fdfs_storaged [start|stop|restart]

1.2 集群信息

用于查看集群信息,包括:tracker信息、storage信息、group信息以及集群运行状况;命令可以在任意一台storage 节点上执行

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

如下图,集群由两个tracker,两个group。其中group2中的storage1处于下线不可用状态

1.3 删除storage节点

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 192.168.56.11

1.4 文件上传

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf [文件名]

例如上传nginx-1.14.0.tar.gz文件

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ./nginx-1.14.0.tar.gz

返回包含文件在fastdfs存储路径(store_path0下)信息和存储文件名信息

group1/M00/00/00/wKg4CltFU7WAAzX-AA-B0CmJB5A.tar.gz

此时可以通过浏览器访问刚刚上传的文件

1.5 文件下载

/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename] [<download_offset> <download_bytes>]

例如,下载fastdfs中的nginx(wKg4CltFWAKADvr_AA-B0CmJB5A.tar.gz )到本地,指定下载的文件名文件名为nginxdownload.tar.gz

/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKg4CltFWAKADvr_AA-B0CmJB5A.tar.gz nginxdownload.tar.gz

1.6 文件删除

/usr/bin/fdfs_delete_file <config_file> <file_id>

例如删除上边上传的nginx

/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKg4CltFU7WAAzX-AA-B0CmJB5A.tar.gz

2. java api 使用

FastDFS提供了良好的java api接口,源码GitHub下载地址:https://github.com/happyfish100/fastdfs-client-java.git
引入api的方式有两种:

2.1 引入api

  1. ant源码构建
ant clean package
  1. maven源码构建
mvn clean install

pom.xml 依赖添加

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

2.2 配置

添加配置文件fdfs_client.conf,增加以下配置

connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890 tracker_server = 192.168.56.10:22122
tracker_server = 192.168.56.11:22122

http.anti_steal_token:配置防盗链,no表示不开启(详细参考FastDFS防盗链一节)
http.secret_key:防盗链密码
tracker_server:tracker连接信息,有多少tracker就配置几个

2.3 api 简单使用

单例模式,无线程池;读取classpath下fdfs_client.conf配置文件

package com.aixin.tuna.fdfs;

import org.csource.fastdfs.*;

import java.sql.Connection;
import java.sql.SQLException; /**
* Created by dailin on 2018/7/11.
*/
public class FdfsUtil { static class Nested {
private static TrackerServer trackerServer =null;
private static StorageServer storageServer = null;
private static StorageClient storageClient = null; static {
try {
ClientGlobal.init("fdfs_client.conf");
TrackerClient tracker = new TrackerClient();
trackerServer = tracker.getConnection();
storageClient = new StorageClient(trackerServer, storageServer);
}catch (Exception e) {
e.printStackTrace();
} }
} //获取单例
public static StorageClient getStorageClient() {
return Nested.storageClient;
}
}

测试:

package fdfs;

import java.io.FileOutputStream;
import java.io.OutputStream; import com.aixin.tuna.fdfs.FdfsUtil;
import org.csource.common.NameValuePair; import org.csource.fastdfs.FileInfo;
import org.csource.fastdfs.StorageClient;
import org.junit.Before;
import org.junit.Test; public class TestFastDfs {
private StorageClient storageClient; @Before
public void init() {
this.storageClient = FdfsUtil.getStorageClient();
} /**
* 测试文件上传,得到上传后的文件路径及文件名称
*/
@Test
public void testUpload() {
try {
String local_filename = "C:\\Users\\1\\Desktop\\1.png"; //本地文件路径 String[] file = storageClient.upload_file(local_filename, "png", null); System.out.println(file.length);
System.out.println("组名:" + file[0]);
System.out.println("路径: " + file[1]);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 测试文件下载,根据文件所在group和文件路径信息访问文件
*/
@Test
public void testDownload() {
try {
String groupName = "group2";
String filePath = "M00/00/00/wKg4C1tFegGAK7WZAADdeFFxlXA481.png"; byte[] bytes = storageClient.download_file(groupName, filePath);
String storePath = "C:\\Users\\1\\Desktop\\download1.png"; OutputStream out = new FileOutputStream(storePath);
out.write(bytes);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取文件基本信息,根据文件所在group和文件路径信息访问文件
*/
@Test
public void testGetFileInfo() { try {
String groupName = "group2";
String filePath = "M00/00/00/wKg4C1tFegGAK7WZAADdeFFxlXA481.png"; FileInfo file = storageClient.get_file_info(groupName, filePath);
System.out.println("source_ip:" + file.getSourceIpAddr());
System.out.println("file_size:" + file.getFileSize());
System.out.println("upload_time:" + file.getCreateTimestamp());
System.out.println(file.toString());
} catch (Exception e) {
e.printStackTrace();
}
} @Test
public void testGetFileMatedata() {
try {
String groupName = "group2";
String filePath = "M00/00/00/wKg4C1tFmmqATh8jAA-B0CmJB5A.tar.gz"; NameValuePair nvps[] = storageClient.get_metadata(groupName, filePath);
if (null != nvps && nvps.length > 0) {
for (NameValuePair nvp : nvps) {
System.out.println(nvp.getName() + ":" + nvp.getValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 删除文件,根据文件所在group和文件路径信息访问文件
*/
@Test
public void testDelete() { try {
String groupName = "group2";
String filePath = "M00/00/00/wKg4C1tFlT6ASyqKAADdeFFxlXA080.png";
int i = storageClient.delete_file(groupName, filePath);
System.out.println(i == 0 ? "删除成功" : "删除失败:" + i);
} catch (Exception e) {
e.printStackTrace();
}
}
}

FastDFS api介绍的更多相关文章

  1. FastDFS的介绍

    FastDFS的介绍 FastDFS FastDFS是由国人余庆所开发,其项目地址: https://github.com/happyfish100 FastDFS是一个轻量级的开源分布式文件系统,主 ...

  2. 常用ArcGIS for Silverlight 开发API介绍

    1.API介绍 2.Map对象  3.Layer对象 4.Symbol对象 5.Task对象

  3. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  4. 分布式文件系统FastDFS原理介绍

    在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以 ...

  5. python学习笔记(win32print API介绍)

    最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...

  6. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  7. Commons-lang API介绍

    4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...

  8. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

  9. Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController

    用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...

随机推荐

  1. json_encode($b, JSON_FORCE_OBJECT) 可以强制转换成对象

    最近在为移动端的项目提供接口,数据格式都为json,不过在过程中遇到一个小问题,代码如下: 情况一: $tmp = array('a','b','c'); echo json_encode($tmp) ...

  2. redis 安装与使用

    到git 官网上下载redis: DownLoad,选择.zip 压缩包 2. 下载后,对zip 包进行解压,解压后如下: 3. 配置并安装redis, 打开window dos 窗口,将目录切换到解 ...

  3. fedora 26 安装 mplayer smplayer

    dnf install mplayer dnf install smplayer 提示仓库 里没有这个软件 fedora默认不提供一些有版权争议的软件,非开源的项目包,所以需要用rpm fusion源 ...

  4. 71.纯 CSS 创作一个跳 8 字型舞的 loader

    原文地址:https://segmentfault.com/a/1190000015534639#articleHeader0 感想:rotateX() 和rotateZ()一起使用好懵呀. HTML ...

  5. 利用IDM工具下载ESA上的Sentinel数据

    由于美国政府关门,NASA,USGS,NOAA等机构中的非核心部门也都放假了,暂时无法提供Sentinel数据下载,而直接从ESA下载数据比蜗牛上山都慢,幸好发现了IDM工具. 利用浏览器或wget工 ...

  6. 在Airtest中如何使用无线模式控制手机

    在使用Airtest超快速开发App爬虫文章的最后,我们留了一个尾巴:如何启动Airtest的无线模式,不用USB线就能控制手机? 本文将会讲到具体的做法.做法分为两种:第一种是在Airtest的ID ...

  7. linux光标操作

    看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动. 在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作. 但是事情也不是那么简单,还是需要知道“如何去 ...

  8. thinkphp51 重定向 redirect()

    thinkphp51 重定向 跨域 redirect() 可以重新定义新的路由,是fetch() 无法做到的.

  9. 开源小程序CMS网站, JeeWx-App-CMS 1.1 版本升级发布,持续更新!

    JeeWx-App-CMS开源小程序CMS网站,持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目,基于小程序wepy语言,具备cms网站的基本功能,能够打造简单易用的 ...

  10. 非web环境的注解配置的spring项目应用(non-web, Spring-data-jpa, JavaConfig, Java Application, Maven, AnnotationConfigApplicationContext)

    非web环境的spring应用 springframework提供的spring容器,非常适合应用于javaweb环境中. 同时,spring组件的低耦合性为普通java应用也提供了足够的支持. 以下 ...