初学者的总结:

仅是简单案例

如果我们想在java后台中将图片上传到linux下的FDFS分布式系统中,首先通过VMware虚拟机安装linux系统。进入系统后,需要安装以下服务:tracker,storage,client,nginx这几个服务

首先说说他们的基本工作原理,客户端发送请求,将文件通过fdfs插件上传,因为tracker不支持http协议,客户端不能通过HTTP直接访问,需要通过nginx解析处理。当上传后nginx会处理 请求,并将携带的文件数据信息转接到tracker,tracker会进行轮询,找到合理的存储位置,也就是storage仓库,它会被存储在storage的文件组中,存储后storage返回一个完整的访问路径,由IP地址和文件系统路径地址组成,通过nginx处理后客户端就可以接受到访问文件的fdfs路径,但是这个路径不包含IP地址,因为服务器的ip有可能发生改变,这样就会导致资源无法访问。所以我们这样下次加载时直接通过这个路径和服务器ip进行动态拼接,才能确保随时访问资源。

在fdfs中,storage服务必须要在tracker服务启动的前提下才有意义,因为storage启动后会通知tracker自己已经开始工作,tracker在轮询时就会找到这个仓库,也就是在tracker中注册。客户端client服务可以将服务器中的文件生成一个访问地址,也是必不可少的。最后就是要启动ngin服务,有了它就可以通过http请求访问到资源库中的文件了。他们缺一不可。

在后台中需要下载fdfs插件,有了这个插件,它就能将文件地址返回给我们,就能轻松访问上传资源了。

public class FastDFSUtils {//加载tracker服务配置文件
        static  {try {String classpath = FastDFSUtils.class.getResource("/").getPath();ClientGlobal.init(classpath + "fdfs.properties");} catch (IOException e) {} catch (MyException e) {}}//上传图片
        public static  String upload(byte[] buffer,String url_end) throws MyException {TrackerClient trackerClient = new TrackerClient();try {TrackerServer trackerServer = trackerClient.getConnection();StorageClient1 storageClient1 = new StorageClient1(trackerServer, null);String s = storageClient1.upload_appender_file1(buffer, url_end, null);return s;} catch (IOException e) {e.printStackTrace();}return null;}

可以直接调用upload方法,将文件转换为byte数组传入参数和后缀名,这服务器就知道按什么样的文件类型接收了。

最后返回的字符串s问文件在系统中的路径,我们需要在这个路径前面加上服务器地址作为请求路径,就可以访问资源了。

具体fdfs各种服务资源包以及安装方法参照文档

点击打开资源链接

fdfs可以让用户在高访问量下高效地访问资源,减少服务器的压力,

JAVA通过FDFS上传以及加载文件原理简析相关推荐

  1. Java的定时器Timer和定时任务TimerTask应用以及原理简析

    记录:272 场景:Java JDK自带的定时器Timer和定时任务TimerTask应用以及原理简析.在JDK工具包:java.util中可以找到源码,即java.util.Timer和java.u ...

  2. java大文件上传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  3. java 图片分段上传_java文件分片上传,断点续传

    文件夹数据库处理逻辑 publicclassDbFolder { JSONObject root; publicDbFolder() { this.root =newJSONObject(); thi ...

  4. Java关于文件上传的一个例子

    文件上传不能用get方式提交,因为他提交的数据量最多只有1kb, IE浏览器默认情况下把file对象当做普通的文本框.并没有当做文件上传来处理. 普通文的表单name =value的形式提交数据. 文 ...

  5. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  6. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...

  7. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  8. 文件上传 java 完美,vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData())...

    vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData()) 地址:https://www.cnblogs.com/muscles ...

  9. Java实现图片上传到服务器

    Java实现图片上传到服务器 #这几天研究图片上传到服务器并回显到页面遇到了问题,在这里总结一下!希望对各位有用!!! 先上代码 jsp代码: <form id="myform&quo ...

  10. java的图片上传与前端展示实例(Servlet+Jsp)

    java的图片上传与前端展示实例(Servlet+Jsp) 内容前瞻 1.关于路径 2.前端图片上传与展示 3.后台获取并保存 环境 1.前端jsp 2.服务器tomcat 3.服务端servlet ...

最新文章

  1. 很用心的写了 9 道 MySQL 面试题
  2. AlphaZero进化论:从零开始,制霸所有棋类游戏
  3. stm32中断向量控制器
  4. 计算机基本信息的获取
  5. boost::test模块类属性工具的单元测试
  6. 递归神经网络部分组件(七)
  7. PMP每日三题(2022年3月8日)
  8. ADO.NET Entity Framework之ObjectQuery
  9. Spring中的AOP——在Advice方法中获取目标方法的参数(转)
  10. 入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?
  11. android 动态创建view,react-native动态创建Android View 无效果
  12. SAP License:欧洲人的项目
  13. SQL Server插入binary类型的数据
  14. Bugku杂项小猪佩奇思路
  15. Oracle10G各版本下载
  16. 【机器学习基础】常用激活函数(激励函数)理解与总结
  17. Windows系统一台主机供多人同时使用的讨论与软件
  18. rose双机热备mysql,实战:ROSE HA双机热备系统安装指南
  19. html如何制作斜线表头表格,2种方法教你怎样在WPS excel中绘制表格斜线表头
  20. 单反基础知识:光圈和快门

热门文章

  1. 2020年最新世界地图_2020年标准地图发布,为何要发布新版标准地图?
  2. “Network”游戏棋人机对弈的设计与实现(二)—判断步骤是否合法
  3. 宝宝树小时光品牌升级:让宝宝从小爱上阅读
  4. 安卓bochs安装linux教程,Ubuntu 14.04 LTS 安装和配置Bochs
  5. compose UI(七)引入视频播放器ExoPlayer
  6. 通信原理及系统系列38——图解过采样和欠采样
  7. 利用word2vec创建中文主题词典——以网络暴力关键词为例
  8. 一卡通管理系统需求分析
  9. android电源管理白名单,{更新}k29去除白名单支持原生电源管理的bios(1.10;1.66)...
  10. 2017数学建模B题回顾与解题分享