
文章插图
文件下载
- 后端low代码如下
import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder;@WebServlet("/downFile") public class downFileInClientServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1、获取让浏览器下载的文件路径String FileRealPath = "D:\JavaTrainStudy\servlet\out\production\study06-httpServletResponse\loginbg.png";// 2、告知浏览器要下载的文件名是什么?String fileName = FileRealPath.substring( FileRealPath.lastIndexOf("\") + 1 );// 3、让浏览器支持文件下载// Content-Disposition这个就是让浏览器支持文件下载// URLEncoder.encode( String s , String enc ) 是为了以防文件名是中文名,这样就设置编码格式了,让浏览器能够解析这个中文文件名resp.setHeader("Content-Disposition" , "attachment ; filename=" + URLEncoder.encode(fileName , "utf-8"));// 4、获取输入、输出流对象 并 把服务器中的文件输出到浏览器上FileInputStream fis = new FileInputStream( FileRealPath );ServletOutputStream os = resp.getOutputStream();// 创建缓冲区int len = 0 ;byte[] buffer = new byte[1024];while ( ( len = fis.read( buffer ) )> 0 ){os.write( buffer , 0 , len);}// 5、关闭流管道if ( os != null ){os.close();}if ( fis != null ){fis.close();}} } 
文章插图
分布式文件系统

文章插图
- 优点解决了传统方式的单点故障问题若某一个节点出现故障,则还有其他的节点可以用来读取和写入文件提供数据备份从而避免磁盘损坏而导致的文件丢失提供扩容机制,无限增加文件存放的空间上限
1.2、认识FastDFS
补充:常见的分布式文件系统
- FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS
1.2.1、了解FastDFS
- 官网:https://github.com/happyfish100/fastdfs
- FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源
- FastDFS对文件进行管理,功能包括:文件存储、文件同步( 指的是:文件系统 和 数据备份之间的同步 )、文件上传、文件下载、文件删除等
- FastDFS解决了大容量文件存储的问题
- FastDFS特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等
- FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务冗余备份:指的是文件系统中存的文件 和 数据备份中存的文件完全一致的问题线性扩容:文件系统 和 数据备份不断增加呗( 就是上图中再加几份嘛 ),和水平扩容类似
1.2.2、FastDFS的组成结构
- 由两大部分构成,一个是客户端,一个是服务端客户端:指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的Java程序就是一个客户端 。FastDFS提供专有API访问,目前提供了C、Java和php几种编程语言的API,用来访问FastDFS文件系统服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)跟踪器 tracker:这个玩意儿类似于Erueka / zookeeper注册中心,起到一个调度的作用 。它是在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽,因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group,group指的就是:文件系统 和 数据备份的组合,这二者就是一个group)中有3台就足够了存储节点 storage:用于存储文件,包括文件和文件属性(meta data,如:文件名、文件大小、文件后缀...)都保存到存储服务器磁盘上 。以及完成文件管理的所有功能:文件存储、文件同步和提供文件访问( 上传、下载、删除 )等
推荐阅读
- 如何批量修改文件名
- 苹果|罗永浩谈苹果新系统发布:有点放飞自我 一口气抄了锤子四五个功能
- iOS|苹果iOS 16系统支持横向人脸解锁:老外感到很惊喜
- 苹果|教你第一时间升级更新!iOS 16 Beta描述文件下载
- Windows操作系统|Win11年度版本22H2特性曝光:回滚系统更方便
- 苹果|苹果发布WatchOS 9系统:4款炫酷表盘、吃药能提醒
- 苹果|苹果发布MacOS 13系统:3A游戏大作正式杀入Mac
- 苹果|今晚发布!iOS 16 Beta描述文件提前偷跑:图标变样了
- 人力资源档案管理系统查询 个人档案查询系统
- 微软|Edge成新一代传文件“神器”:新功能几乎可传所有内容
