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();
}
}

}

亲测可用

最新文章

  1. 原生ajax实现登录(一部分代码)
  2. 用java做的免费投票器/软件/工具 可定制
  3. DCL,DDL,DML,DQL
  4. Flash Vector例子
  5. 怒刷BZOJ记录(一)1001~1037
  6. Java中BigDecimal的8种舍入模式是怎样的
  7. 【LeetCode】 sort list 单清单归并
  8. javascript运动框架(二)
  9. 蓝桥杯练习系统— 算法训练 Beaver&#39;s Calculator
  10. Linux socket 类封装 (面向对象方法)
  11. c++ std::advance
  12. Springboot知识点
  13. Centos 7.3下 Linux For SQL Server安装及配置介绍
  14. 正则表达式零宽断言详解(?=,?&lt;=,?!,?&lt;!)
  15. assets下的文件复制到SD卡
  16. 2018.10.2浪在ACM 集训队第二次测试赛
  17. RNN生产唐诗
  18. 【洛谷p2669】【一本通p1100】金币
  19. Delphi疑难问题整理!!!
  20. django rest framwork教程之 viewsets和routers

热门文章

  1. 实操记录之-----Ant Design of Vue 增强版动态合并单元格,自动根据数据进行合并,可自定义横纵向合并
  2. 解决win7嵌入式系统无法DoublePulsar问题
  3. StringBuilder类-toString方法
  4. Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink
  5. 定时调度插件------Sundial
  6. .Net7运行模型之托管Main函数的调用
  7. Vue19 常用指令及自定义指令
  8. git分支的一些处理情况记录
  9. VS 管理控制台提示ScriptHalted
  10. 关于Powerlink和EtherCAT的对比