Java实现FastDFS文件上传下载和删除
Posted yuwenS.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现FastDFS文件上传下载和删除相关的知识,希望对你有一定的参考价值。
FastDFS基于Java对文件进行上传、下载和删除
前期准备
- 需要下载FastDFS的官方源代码https://codeload.github.com/happyfish100/fastdfs-client-java/zip/master到本地。
- 下载成功后将源代码打包成jar包放入Maven仓库
- 服务器有FastDFS环境并且已经启动
- 如果像要在外部浏览器上访问到传文件的内容,需要在服务器中配置FastDFS提供的一个Nginx扩展模块
具体实现
- 新建一个Maven工程在pom.xml文件导入FastDFS源码编译成的jar包
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
- 在resources文件下新建fastdfs.conf文件并编写
tracker_server=服务器地址:22122 //表示tracker的地址和端口如果是集群有多个就继续往下写
- 文件上传(upload)代码具体实现
//文件上传
private static void upload()
TrackerServer ts = null;
StorageServer ss = null;
try
//读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getConnection();
ss = tc.getStoreStorage(ts);
//定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
StorageClient sc = new StorageClient(ts,ss);
//文件上传
//参数一 需要上传的文件的绝对路径
//参数二 为需要上传的文件的扩展名
//参数三 为文件的属性文件通常不上传
//返回一个String数组 这个数据对我们非常重要,建议存入数据库
//返回值,一个是组名,一个是上传文件存储在的目录
String[] result = sc.upload_appender_file("d:/a.jpg","jpg",null);
for (String str:result)
System.out.println(str);
catch (IOException | MyException e)
e.printStackTrace();
finally
if (ss != null)
try
ss.close();
catch (IOException e)
e.printStackTrace();
if (ts != null)
try
ts.close();
catch (IOException e)
e.printStackTrace();
- 文件下载(download)的具体实现
//文件下载
private static void download()
TrackerServer ts = null;
StorageServer ss = null;
try
//读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getConnection();
ss = tc.getStoreStorage(ts);
//定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
StorageClient sc = new StorageClient(ts,ss);
//文件下载
//参数一 需要下载的文件的组名
//参数二 需要下载文件的远程文件名
//参数三 需要保存到本地的文件名称
//返回一个int类型的数据,返回0表示文件下载成功其它值表示文件下载失败
String groupName = "group1";
String remoteName = "M00/00/00/sBRcHmDIlLCEDtsjAAAAAE_bs3A176.png";
String localFileName = "d:/download.png";
int i = sc.download_file(groupName, remoteName,localFileName);
System.out.println(i);
catch (IOException | MyException e)
e.printStackTrace();
finally
if (ss != null)
try
ss.close();
catch (IOException e)
e.printStackTrace();
if (ts != null)
try
ts.close();
catch (IOException e)
e.printStackTrace();
- 文件删除(delete)的具体实现
private static void delete()
TrackerServer ts = null;
StorageServer ss = null;
try
//读取FsatDFS的配置文件用于将所有的tracker的地址读取到内存中
ClientGlobal.init("fastdfs.conf");
TrackerClient tc = new TrackerClient();
ts = tc.getConnection();
ss = tc.getStoreStorage(ts);
//定义storage的客户端对象,需要使用这个对象来完成具体文件上传 下载和删除
StorageClient sc = new StorageClient(ts,ss);
//文件下载
//参数一 需要删除的文件的组名
//参数二 需要删除文件的远程文件名
//返回一个int类型的数据,返回0表示文件删除成功其它值表示文件删除失败
String groupName = "group1";
String remoteName = "M00/00/00/sBRcHmDIlLCEDtsjAAAAAE_bs3A176.png";
int i = sc.delete_file(groupName,remoteName);
System.out.println(i);
catch (IOException | MyException e)
e.printStackTrace();
finally
if (ss != null)
try
ss.close();
catch (IOException e)
e.printStackTrace();
if (ts != null)
try
ts.close();
catch (IOException e)
e.printStackTrace();
测试
文件上传测试结果
在外部浏览器访问这个文件通过组名和位置访问
测试下载
返回0表示下载成功
测试删除
返回0表示删除成功
以上是关于Java实现FastDFS文件上传下载和删除的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot整合FastDFS实现文件的上传下载和删除
SpringBoot整合FastDFS实现文件的上传下载和删除
fastdfs分布式文件系统之与dubbo整合实现分布式服务接口