FastDFS的体系结构

FastDFS 主要包括Tracker Server 和 Storage Server。Tracker server 是 FastDFS 文件系统的协调者,主要作用是负载均衡和调度选择 Storage server 进行文件存储。

FastDFS文件上传

  1. Storage Server 定期向Tracker Server 发送状态信息,保持心跳连接。

  2. 客户端发起文件上传请求。

  3. Tracker Server 查询所有与它保持连接的 Storage Server ,调度找到一个合适的 Storage Server。

  4. Tracker Server 向客户端返回该 Storage Server 的相关信息,包括 Storage Server 的 ip 和端口号。

  5. 客户端通过 ip 和端口号与 Storage Server 建立连接,发送文件数据

  6. Storage Server 生成唯一的路径名 file_id ,file_id 由分组名(group)和文件路径名(url)拼接而成。

  7. 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文件下载

  1. Storage Server 定期向Tracker Server 发送状态信息,保持心跳连接。

  2. 客户端发起文件下载请求。

  3. Tracker Server 查询所有与它保持连接的 Storage Server ,调度找到一个合适的 Storage Server。

  4. Tracker Server 向客户端返回该 Storage Server 的相关信息,包括 Storage Server 的 ip 和端口号。

  5. 客户端通过 ip 和端口号与 Storage Server 建立连接,客户端向 Storage Server 请求文件数据(携带分组号和文件路径参数)

  6. Storage Server 同一组之间同步线程,共享文件数据,因此即便是不同的 Storage Server 仍能找到对应的文件地址。

  7. 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代码实现)相关推荐

  1. FastDFS文件上传和下载流程

  2. 基于FTP协议实现文件上传与下载

    目录 一.FTP简介 二.关于FTP服务器 三.文件上传 分步讲解: 完整实现代码: 四.下载文件 分步讲解: 完整实现代码: 小结 一.FTP简介 FTP(File Transfer Protoco ...

  3. Java操作FastDFS实现文件上传和下载

    前言:在GItHub上(地址:https://github.com/happyfish100),作者提供了fastdfs-client-java源码,源码里面提供了操作FastDFS的工具类,所以我们 ...

  4. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  5. SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明

    看在前面:前端页面通过input控件实现文件上传,后台Java使用SpringMVC框架的实现网上有较多教程,但是真正配置一遍下来不报错的较少,所以本博客前面先介绍一遍完整的设置步骤,然后介绍遇到的一 ...

  6. java里面的文件上传与下载

    java里面的文件上传与下载 文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileuplo ...

  7. java图片预览上传_java实现文件上传、下载、图片预览

    这篇文章主要介绍了java实现文件上传.下载.图片预览,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 多文件保存到本地: @ResponseBody ...

  8. java spring文件下载_SpringMVC实现文件上传和下载的工具类

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...

  9. Java Web项目中遇到的文件上传与下载问题

    (转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html)   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...

  10. Java如何进行文件上传与下载

    Java文件上传与下载 在项目开发中难免遇到这样的问题,对于我这种小白,那只能寻求度娘的帮助拉,各种搜索和看博客文章,当实际运行时....哎,痛苦. 今日分享一波,望你所用,烦闷去之. 文件上传 首先 ...

最新文章

  1. boost::math::policies用法的测试程序
  2. EXP-00091 正在导出有问题的统计信息 问题的解决(转)
  3. .NET Core微服务 权限系统+工作流(一)权限系统
  4. BroadcastReceive之ip拨号
  5. MySql 自动更新时间为当前时间
  6. 【原创】Linux基础之去掉windows中的\r
  7. git clone server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile
  8. [面试] 删除多余的数组内容
  9. 一个存储交流的报告——闪存存储系统设计
  10. 手撸 webpack4.x 配置(二)
  11. 单片机控制10BitDA正弦信号发生器 PROTEUS 和51单片机教程(附仿真文件+源代码)
  12. 飞鸽传书 linux,飞鸽传书Linux版
  13. 第十届全国大学生GIS应用技能大赛上午(试题及参考答案)
  14. 服务器3389信息,服务器3389远程记录查看
  15. 内存卡被格式化怎么恢复
  16. 一文搭建Vuepress博客/文档系统:搭建,导出,SEO,自动编译和部署,域名,HTTPS,备案等
  17. React组件前端组件化开发
  18. Stopwatch常用方法,不积硅步无以至千里
  19. 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
  20. 亚商投资顾问 早餐FM/1028华为海外推广5.5G

热门文章

  1. 几何公差基础知识之平面度
  2. 自然语言处理之分词技术
  3. 玩大灾变出现“igxprd32显示驱动程序已经停止正常工作”解决方法
  4. 人脸识别技术和人脸识别特征
  5. dxf制作kml_kml到dxf
  6. Qt实战案例(54)——利用QPixmap设计图片透明度
  7. strtok函数详解
  8. SPIR-V教程 -- SPIR-V介绍(一)
  9. 计算机高校教师面试试讲和答辩,高校教师试讲答辩面试考试流程
  10. Linux系统进程优化理论与方法