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. py之循环,函数

    循环 a=1 while a<10: print(a) a+=1 a=[123,1235,123124,1231] while a: a1=a.pop() print(a1) for a1 in ...

  2. 分布式事务 | 使用 dotnetcore/CAP 的本地消息表模式

    本地消息表模式 本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消息衔接,事件消息和上个事务共用一个本地事务存储到本地消息表,再通过定时任务轮询本地消息 ...

  3. vulnhub靶场之RIPPER: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:Ripper: 1,下载地址:https://download.vulnhub.com/ripper/Ripper.ova,下载后直接vbox打 ...

  4. 实现一个简单的在浏览器运行Dotnet编辑器

    之前已经实现过Blazor在线编译了,现在我们 实现一个简单的在浏览器运行的编辑器,并且让他可以编译我们的C#代码, 技术栈: Roslyn 用于编译c#代码 [monaco](microsoft/m ...

  5. 洛谷p1423

    1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 double n;//n:要游的距离 6 cin&g ...

  6. C#写文本日志

    /*----------------------------------------------------------------- * 作 者(Author): Dennis * 日 期(Crea ...

  7. MySQL8.0 高可用集群化 · mysql-shell · mysql-router · docker · 单主多从

    高可用集群的基本特点 负载均衡 / 读写分离 / 故障转移本文以此为目标,利用 mysql-shell.mysql-router,基于 docker 的环境架构(篇幅太长,内容多了点儿). 一.名词及 ...

  8. 如何让程序更健壮「GitHub 热点速览」

    对于 ML 模型训练而言,好的数据集能让结果更健壮,cleanlab 是一个降低数据噪音,及时帮你修正数据集错误的工具.好的工具能让你的结果更完美.同样的,RedTeam-Tools 提高了渗透测试的 ...

  9. h5与原生app通信的各种功能

    import config from '@/config/index'; import cubeModule from '_public/CubeModule.json'; const _MIDEA_ ...

  10. P4238 【模板】多项式乘法逆

    #include <cstdio> #include <iostream> #define re register using namespace std; typedef l ...