https://github.com/happyfish100/fastdfs-client-java

到此处下载下来demo

这里采用maven的方式

mvn clean install

上传到本地仓库

mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversion=1.29-SNAPSHOT -Dpackaging=jar -Dfile=fastdfs-client-java-1.29-SNAPSHOT.jar

引入文件上传依赖

<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

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

项目结构

代码如下:

@RestController
public class AttachmentController {

@RequestMapping("/upload")
public String fdfsUpload(@RequestParam MultipartFile file){
try {
ClientGlobal.initByProperties("fdfs-client.properties");
System.out.println("初始化信息:"+ClientGlobal.configInfo());
// 链接FastDFS服务器,创建tracker和Stroage
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getTrackerServer();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
String tempFileName = file.getOriginalFilename();
String fileExtName = tempFileName.substring(tempFileName.lastIndexOf(".")+1);
//上传文件,只需要文件字节数组,第二个参数是文件扩展名,第三个参数是元数据
String[] strings = storageClient.upload_file(file.getBytes(), fileExtName, null);
String result="";
for (int i=0;i<strings.length;i++){

if(i==strings.length-1){
result+=strings[i];
}else{
result+=strings[i]+"/";
}

}
System.out.println(result);

} catch (Exception e) {
e.printStackTrace();
}

return null;
}

/**
* FastDFS实现文件下载
*
* @param filePath
*/
@RequestMapping(value = "/download", method = RequestMethod.GET)
@ResponseBody
public void fdfsDownload(String filePath) {
try {
ClientGlobal.initByProperties("fdfs-client.properties");

// 链接FastDFS服务器,创建tracker和Stroage
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getTrackerServer();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
byte[] b = storageClient.download_file("group1", filePath);
if (b == null) {
throw new IOException("文件" + filePath + "不存在");
}

String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
FileOutputStream fileOutputStream = new FileOutputStream("E://" + fileName);
IOUtils.write(b, fileOutputStream);
fileOutputStream.close();
System.out.println("文件下载成功");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* FastDFS实现文件删除
*
* @param filePath
*/
@RequestMapping(value = "/delete", method = RequestMethod.GET)
@ResponseBody
public void fdfsDelete(String filePath) {
try {
ClientGlobal.initByProperties("fdfs-client.properties");

TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getTrackerServer();
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
int deleteResult = storageClient.delete_file("group1", filePath);

if (deleteResult== 0) {
System.out.println("文件删除成功");
}else {
System.out.println("文件删除失败");
}

} catch (Exception e) {
e.printStackTrace();
}
}

}

亲测可用

fastdfs java客户端操作的更多相关文章

  1. Java 客户端操作 FastDFS 实现文件上传下载替换删除

    FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...

  2. HDFS的Java客户端操作代码(HDFS的查看、创建)

    1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  3. 使用Java客户端操作elasticsearch(二)

    承接上文,使用Java客户端操作elasticsearch,本文主要介绍 常见的配置 和Sniffer(集群探测) 的使用. 常见的配置 前面已介绍过,RestClientBuilder支持同时提供一 ...

  4. Hive学习(三)Hive的Java客户端操作

    Hive的Java客户端操作分为JDBC和Thrifit Client,首先启动Hive远程服务: hive --service hiveserver 一.JDBC 在MyEclipse中首先创建连接 ...

  5. 使用Java客户端操作elasticsearch

    Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low- ...

  6. Hadoop学习(2)-java客户端操作hdfs及secondarynode作用

    首先要在windows下解压一个windows版本的hadoop 然后在配置他的环境变量,同时要把hadoop的share目录下的hadoop下的相关jar包拷贝到esclipe 然后Build Pa ...

  7. 关于FastDFS Java客户端源码中的一个不太明白的地方

    下面代码是package org.csource.fastdfs下TrackerGroup.java文件中靠近结束的一段代码,我下载的这个源码的版本是1.24. /** * return connec ...

  8. FastDfs java客户端上传、删除文件

    #配置文件 connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 9090 http.an ...

  9. HDFS的java客户端操作代码(Windows上面打jar包,提交至linux运行)

    1.通过java.net.URL实现屏幕显示demo1文件的内容 package Hdfs; import java.io.InputStream; import java.net.URL; impo ...

  10. HDFS的Java客户端操作代码(HDFS删除文件或目录)

    1.HDFS删除文件或目录 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.hadoo ...

随机推荐

  1. pycham debug 专辑

    遇到大量代码的项目时怎么迅猛的调代码今天将交给大家几个方法 配置环境: 环境的统一是一切的基础,因为不同的版本不同步之间会造成很多各式各样的报错 然后选择现有环境进行配置 上面的路径进行默认环境变量的 ...

  2. 图文并茂的学习笔记--微信小程序自定义tabbar

    我发现自带的那个tabbar不可以修改样式,没得搞啊,这不行,要改 首先,我们看文档,地址在下面 https://developers.weixin.qq.com/miniprogram/dev/fr ...

  3. Stream流中的常用方法_Foreach-Stream流中的常用方法_filter

    Stream流中的常用方法_Foreach 流模型的操作很丰富,这里介绍一些常用的API.这些方法可以被分成两种︰·延迟方法∶返回值类型仍然是Stream,接口自身类型的方法,因此支持链式调用.(除了 ...

  4. Unity - 无限滚动

    今天学习:Unity - UGUI - 无限滚动 目录 今天学习:Unity - UGUI - 无限滚动 版本: 一:思路分享(Share idea) 二:脚本编写(Scripts) 三:场景面板布置 ...

  5. 基于AS2协议的EDI 系统

    一款由JAVA语言开发的基于AS2 协议的EDI 轻量级系统 优点如下: 1.价格便宜.目前市场上一条gateway线路动辄数万,甚至数万/年. 2.功能强大.功能可以与主流EDI 软件媲美. 3.可 ...

  6. 带你读AI论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击

    摘要:这篇文章属于系统分析类的文章,通过详细的实验分析了离地攻击(Living-Off-The-Land)的威胁性和流行度,包括APT攻击中的利用及示例代码论证. 本文分享自华为云社区<[论文阅 ...

  7. drf-day4——序列化类常用字段和字段参数、序列化类source用法、序列化类定制字段返回内容的两种方式、序列化类的多表关联反序列化保存、反序列化字段校验、ModelSerializer的使用

    目录 一.序列化类常用字段和字段参数(了解) 1.1 常用字段类 1.2 常用字段参数 选项参数: 通用参数: 重点 二.序列化高级用法之source(了解) 2.1 序列化定制字段名字 三.序列化高 ...

  8. mysql 错误解决大法 Specified key was too long; max key length is 767 bytes

    高版本mysql向低版本(5.7以下)导入sql时可能会发生此问题 开启索引最大长度 SET GLOBAL INNODB_LARGE_PREFIX = ON; 将表改为动态表SET GLOBAL in ...

  9. 前瞻性研究: axSpA中轴放射学进展延缓得益于TNF抑制剂持续治疗3年

    西班牙学者近期发表的这项前瞻性研究是基于axSpA患者注册登记数据库,患者登记入库后,继续治疗和评估3年[1]. 患者分为2组,组1有46例,在登记入库时已经在用肿瘤坏死因子抑制剂(TNFi)且已治疗 ...

  10. Git远程提交的冲突解决

    先本地直接提交代码:git push origin master 如果别人在自己之前提交了修改,git会提示push失败,需要先pull远程代码:git pull origin/master (拉取远 ...