您好, 访客   登录/注册

大附件上传管理系统的设计与实现

来源:用户上传      作者:左昌麒 何丽 王铁山

  摘要:随着计算机技术的不断发展,网络资源文件的管理越来越被人们所重视。人们对大容量文件传输的便捷性、安全性和可靠性的要求也越来越高。该文以目前流行的前端框架Bootstrap为基础,结合HTML5、jQuery技术、PHP等技术,设计了一个基于Web的大容量附件上传管理系统,实现了前端附件上传、后台附件复制、删除、分类管理等功能。详细介绍了断点续传、自动重传等实现技术,经测试证明,该系统能较好满足大容量附件上传需求。
  关键词:文件上传;Bootstrap;jQuery;断点续传
  中图分类号:TP311 文献标识码:A
  文章编号:1009-3044(2020)01-0083-03
  1概述
  当代計算机技术发展迅速,网络资源文件的管理越来越被人们所重视。为此各种方便管理用户文件的网盘技术日益兴起。以百度网盘为例,百度网盘有桌面版和移动版,技术非常成熟,也都提供了断点续传功能,但是因为基于TCP/IP协议在传输大文件的时候需要一个建立连接的过程,对用户带宽需求较高。另一方面下载功能限速,如果用户没有开通百度网盘的会员服务,下载文件的网络传输会限制在一个线程以内,最大传输速度约为128Kbyte每秒,非常影响用户体验。
  为此,本文借鉴百度网盘的设计思想,实现一个局域网版的网盘(大附件管理系统)供教师用来管理各类大容量文件,包括上传各类教学视频、学生上交的大作业等,学生可通过此系统上传需要提交的大作业文件。该系统可提供桌面和移动端两种访问方式,从而为教师管理各类大文件提供网盘服务。
  2系统总体设计
  该系统采用Bs架构进行系统设计。前端采用目前流行的基于jQuery前端框架Bootstrap,同时采用响应式页面设计,交互简单方便;后台使用PHP和MySQL数据库对文件数据进行管理。整个系统分为Web客户端与Web服务器,前后台之间通过JsON进行数据通信。
  系统的总体功能结构如图所示。
  2.1前端文件上传插件
  该模块的设计实现相对简单。其功能依赖于服务端文件管理模块来实现断点续传功能,包括链接到服务端文件管理页面的用户登录及验证页面。
  2.2服务端文件管理
  文件管理模块是该系统的核心,由文件表格、文件树和文件编辑模块三个插件构成。主要功能可以分为:
  1)基于Web的文件资源浏览。
  2)基于Web的文件在线打开和编辑。
  3)基于HTYP协议的大文件传输。
  4)大文件传输的断点续传功能。
  5)文件和文件夹的基本操作,如下载,删除,复制和移动等。
  6)用户文件的空间管理。
  2.3数据库及文件服务器
  本系统使用MySQL数据库,用来保存用户信息、上传的文件基本信息。文件断点续传模块采用base54加密的存储技术来实现对文件信息的管理。
  3关键技术实现
  3.1断点续传实现基本思路
  断点续传功能是文件安全上传的重要保障,要实现断点续传,一般传统的方法是使用前端页面Form表单的input标签选中文件,或者使用HTML5 File API新引入的FormData对象上传文件,将文件作为一个整体提交,服务器将文件重命名然后保存在临时目录,如果一段时间不继续操作那么服务器就会删除该文件。而且HTYP协议是一个无状态的协议,用户无法与服务器保持长连接状态,所以在实际开发过程中不能使用Buffer的形式来提交文件对象。
  本系统采用的方法如下:
  1)对获取到的文件对象进行分割切片,一小块一小块的传输到服务器。在后台PHP端采用APPEND的方式将文件合并成一个整体。
  2)上传文件前先执行初始化操作,即先向服务器查询已上传的文件大小来确定本轮分割的起点字节位置。
  3)每次上传完成后应该更新已经上传文件的大小记录,向数据库修改文件信息。
  4)最后需要Tag客户端与服务器的文件,将各个文件块一一对应,防止将A文件的部分内容写入B文件。
  3.2文件上传的FormData封装格式
  上传文件的过程可以概括为点击选择文件按钮触发文件框打开事件,执行文件上传初始化操作,即向服务器查询断点信息,然后向服务器发送FormData封装好的文件块。
  将二进制文件对象封装成表单数据使用FormData类,利用jQuery的Ajax上传到服务端处理程序upload.php,将pmcessDa-ta和contentType属性设置为false,在上传完成的SUCCSSS回调函数执行更新进度条信息等操作。
  3.3断点续传的具体实现
  由于HTYP的无状态特性,在文件切片上传的同时要注意最大的传输单位是2Mbyte,本系统将文件块的大小规定为1Mbyte·,具体实现的Js代码如下:
  而在后台服务器端用PHP来接收上传的文件块,实现方案如下:
  先定义一个初始化函数用来向服务器查询已经上传的文件大小,以确定本次应该分割的字节位置:
  相应的,在服务器端也需要做初始化查询的脚本来配合前端完成功能:
  4总结
  为满足在校学生便捷的上交大容量作业,教师方便管理各类教学视频、学生上交的大作业等需求,本文研究并实现了一个基于web的大附件上传管理系统。基本满足目前工作需要。但该系统的文件管理采用了实体文件目录树形结构,因此在文件共享、大量文件移动等方面略显不足。在下一版本改进中,将考虑使用完全二叉树的形式保存目录结构,在查找算法上结合并查集进行快速递归,从而提高系统的性能。
转载注明来源:https://www.xzbu.com/8/view-15145405.htm