网站首页 > 技术教程 正文
前端的思路大体已经了解了:分片
- 用户选择文件,监听到文件内容变化后,拿到文件,通过FLASH或者H5对文件内容进行流读取,然后计算MD5值
- 计算出MD5后,通过异步请求后端,查找该MD5是否已经存在,如果存在,相当于该文件已经存在了,此时就可以调过文件的上传过程,实现秒传;
当然,有可能是续传:那么此时,可以通过MD5确定到这个文件是哪个文件,同时,该文件已经上传成功的分片序号(或者标识),返回前端,由前端对分片序号(标识)进行校验,已经成功上传的分片则跳过;
3.如果MD5不存在,则是属于新文件,需要重头开始传,前端对文件进行分片,大小2M-5M,小于200M用2M,以上用5M
4.将文件分片后,通过校验,将没有上传通过的分片,通过异步,将内容提交给后台
5.后台接受到分片后,通过MD5值确定文件,通过分片内容及序号(标识)确定在文件中的位置,然后对分片进行拼接或扩容
6.由于是异步长传,可能分片的顺序并不是顺序提交的,所以需要可以对分片内容进行缓存,如果文件共10个分片,现在已经传递了3个分片,到第四个分片,此时判断提交的分片是不是第四个,如果是则拼接,拼接后,在缓存中查找是否有第五个分片,如果有,则继续拼接,以此类推;如果不是则缓存;如果拼接完成后继续更新数据库,防止传输中断,方面下次继续查找;
分片拼接的第二种方式:扩容,如果传递的是第二个,则把第一个空间留出来,等上传第一个的时候,再拼接上;这样会比较好点,不会耗内存;
上传完成后,更新数据库的标识,文件完整;
7.当分片全部上传完成后,文件则上传完毕,由于是hadoop服务器的存在,那么之前的操作 都是在项目中进行的,也就是说如果文件没有上传完成,则全部留在本地的临时文件夹中;
数据库表结构:
id : 主键ID
MD5 : 文件的MD5值,
attachmentId : 附件ID,用来查找其他的属性,比如pdfpath或者高清或者一些其他的等等。
filePath : 文件的路径(可能是在hadoop服务器,也可能在本地的临时文件中,有可能上传完了,也有可能没成功)
iscomplete : 文件是否完整,在文件完成后更新
chrunklist : 已经成功的分片列表,通过查找,返回前端校验使用
实现方式:
- 通过HTML5的API实现,额 这个有兴趣可以研究下,搞一搞
- 别人家的东西,webuploader,百度的,对百度好感还是不错的
参考网址:
ps: 以下均为webuploader的参考文章,方便以后查找
断点续传和秒传参考: https://github.com/fex-team/webuploader/issues/142
github : https://github.com/fex-team/webuploader/tree/research/experiment
API : http://fex.baidu.com/webuploader/doc/index.html
逻辑讲解: http://bbs.csdn.net/topics/391906102
webuploader issue : https://github.com/fex-team/webuploader/issues
- 上一篇: C#断点续传的实现示例 c++断点续传
- 下一篇: 10G 大文件、秒传、断点续传、分片上传
猜你喜欢
- 2024-12-18 什么是可编程的幻彩灯带 什么是可编程的幻彩灯带呢
- 2024-12-18 字节跳动面试官,我也实现了大文件上传和断点续传
- 2024-12-18 百度网盘重新启动后遇到下载任务重新开始问题
- 2024-12-18 lazarus、delphi文件HTP下载断点续传的实现
- 2024-12-18 Java实战:大文件分片上传与断点续传策略及其实际应用
- 2024-12-18 js 大文件上传和断点续传 js上传文件大小限制
- 2024-12-18 Winform文件下载之断点续传 win10断点续传
- 2024-12-18 一文搞定SpringBoot分片上传、断点续传、大文件极速秒传功能
- 2024-12-18 完整教程:使用Spring Boot实现大文件断点续传及文件校验
- 2024-12-18 文件断点续传的协议-Tus 协议 文件上传断点续传
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)