fastdfs java客户端操作
2024-10-20 03:41:23
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();
}
}
}
亲测可用
最新文章
- 原生ajax实现登录(一部分代码)
- 用java做的免费投票器/软件/工具 可定制
- DCL,DDL,DML,DQL
- Flash Vector例子
- 怒刷BZOJ记录(一)1001~1037
- Java中BigDecimal的8种舍入模式是怎样的
- 【LeetCode】 sort list 单清单归并
- javascript运动框架(二)
- 蓝桥杯练习系统— 算法训练 Beaver&#39;s Calculator
- Linux socket 类封装 (面向对象方法)
- c++ std::advance
- Springboot知识点
- Centos 7.3下 Linux For SQL Server安装及配置介绍
- 正则表达式零宽断言详解(?=,?<;=,?!,?<;!)
- assets下的文件复制到SD卡
- 2018.10.2浪在ACM 集训队第二次测试赛
- RNN生产唐诗
- 【洛谷p2669】【一本通p1100】金币
- Delphi疑难问题整理!!!
- django rest framwork教程之 viewsets和routers
热门文章
- 实操记录之-----Ant Design of Vue 增强版动态合并单元格,自动根据数据进行合并,可自定义横纵向合并
- 解决win7嵌入式系统无法DoublePulsar问题
- StringBuilder类-toString方法
- Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink
- 定时调度插件------Sundial
- .Net7运行模型之托管Main函数的调用
- Vue19 常用指令及自定义指令
- git分支的一些处理情况记录
- VS 管理控制台提示ScriptHalted
- 关于Powerlink和EtherCAT的对比