FastDFS文件上传和下载(java代码实现)
FastDFS的体系结构
FastDFS 主要包括Tracker Server 和 Storage Server。Tracker server 是 FastDFS 文件系统的协调者,主要作用是负载均衡和调度选择 Storage server 进行文件存储。
FastDFS文件上传
Storage Server 定期向Tracker Server 发送状态信息,保持心跳连接。
客户端发起文件上传请求。
Tracker Server 查询所有与它保持连接的 Storage Server ,调度找到一个合适的 Storage Server。
Tracker Server 向客户端返回该 Storage Server 的相关信息,包括 Storage Server 的 ip 和端口号。
客户端通过 ip 和端口号与 Storage Server 建立连接,发送文件数据
Storage Server 生成唯一的路径名 file_id ,file_id 由分组名(group)和文件路径名(url)拼接而成。
Storage Server 将接收到的内容写入当前服务器磁盘中,并向客户端返回 file_id 信息,客户端按需要进行保存相关信息。
java代码实现
/*** 文件上传* @param file* @return*/public static String[] upload(MyFile file) {try {// 创建TrackerClient客户端对象TrackerClient trackerClient = new TrackerClient();// 通过TrackerClient对象获取TrackerServer信息TrackerServer trackerServer = trackerClient.getConnection();// 获取StorageClient对象StorageClient storageClient = new StorageClient(trackerServer,null);NameValuePair[] meta_list = new NameValuePair[]{new NameValuePair(file.getAuthor()), new NameValuePair(file.getName())};String[] strings = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);return strings;// strings[0]==group1 strings[1]=M00/00/00/wKjThF1aW9CAOUJGAAClQrJOYvs424.jpg} catch (Exception e) {e.printStackTrace();}return null;}
FastDFS文件下载
Storage Server 定期向Tracker Server 发送状态信息,保持心跳连接。
客户端发起文件下载请求。
Tracker Server 查询所有与它保持连接的 Storage Server ,调度找到一个合适的 Storage Server。
Tracker Server 向客户端返回该 Storage Server 的相关信息,包括 Storage Server 的 ip 和端口号。
客户端通过 ip 和端口号与 Storage Server 建立连接,客户端向 Storage Server 请求文件数据(携带分组号和文件路径参数)
Storage Server 同一组之间同步线程,共享文件数据,因此即便是不同的 Storage Server 仍能找到对应的文件地址。
Storage Server 发送给客户端对应的文件数据,客户端通过 io 流下载文件数据到本地
java代码实现
public static InputStream downFile(String groupName,String remoteFileName){try {//创建TrackerClient对象TrackerClient trackerClient = new TrackerClient();//通过TrackerClient对象创建TrackerServerTrackerServer trackerServer = trackerClient.getConnection();//通过TrackerServer创建StorageClientStorageClient storageClient = new StorageClient(trackerServer,null);//通过StorageClient下载文件byte[] fileByte = storageClient.download_file(groupName, remoteFileName);//将字节数组转换成字节输入流return new ByteArrayInputStream(fileByte);} catch (Exception e) {e.printStackTrace();}return null;}
FastDFS文件上传和下载(java代码实现)相关推荐
- FastDFS文件上传和下载流程
- 基于FTP协议实现文件上传与下载
目录 一.FTP简介 二.关于FTP服务器 三.文件上传 分步讲解: 完整实现代码: 四.下载文件 分步讲解: 完整实现代码: 小结 一.FTP简介 FTP(File Transfer Protoco ...
- Java操作FastDFS实现文件上传和下载
前言:在GItHub上(地址:https://github.com/happyfish100),作者提供了fastdfs-client-java源码,源码里面提供了操作FastDFS的工具类,所以我们 ...
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明
看在前面:前端页面通过input控件实现文件上传,后台Java使用SpringMVC框架的实现网上有较多教程,但是真正配置一遍下来不报错的较少,所以本博客前面先介绍一遍完整的设置步骤,然后介绍遇到的一 ...
- java里面的文件上传与下载
java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...
- java图片预览上传_java实现文件上传、下载、图片预览
这篇文章主要介绍了java实现文件上传.下载.图片预览,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 多文件保存到本地: @ResponseBody ...
- java spring文件下载_SpringMVC实现文件上传和下载的工具类
本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...
- Java Web项目中遇到的文件上传与下载问题
(转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html) 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...
- Java如何进行文件上传与下载
Java文件上传与下载 在项目开发中难免遇到这样的问题,对于我这种小白,那只能寻求度娘的帮助拉,各种搜索和看博客文章,当实际运行时....哎,痛苦. 今日分享一波,望你所用,烦闷去之. 文件上传 首先 ...
最新文章
- boost::math::policies用法的测试程序
- EXP-00091 正在导出有问题的统计信息 问题的解决(转)
- .NET Core微服务 权限系统+工作流(一)权限系统
- BroadcastReceive之ip拨号
- MySql 自动更新时间为当前时间
- 【原创】Linux基础之去掉windows中的\r
- git clone server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile
- [面试] 删除多余的数组内容
- 一个存储交流的报告——闪存存储系统设计
- 手撸 webpack4.x 配置(二)
- 单片机控制10BitDA正弦信号发生器 PROTEUS 和51单片机教程(附仿真文件+源代码)
- 飞鸽传书 linux,飞鸽传书Linux版
- 第十届全国大学生GIS应用技能大赛上午(试题及参考答案)
- 服务器3389信息,服务器3389远程记录查看
- 内存卡被格式化怎么恢复
- 一文搭建Vuepress博客/文档系统:搭建,导出,SEO,自动编译和部署,域名,HTTPS,备案等
- React组件前端组件化开发
- Stopwatch常用方法,不积硅步无以至千里
- 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
- 亚商投资顾问 早餐FM/1028华为海外推广5.5G