1 |
- (window.webpackJsonp=window.webpackJsonp||[]).push([[99],{436:function(a,v,_){"use strict";_.r(v);var t=_(0),s=Object(t.a)({},(function(){var a=this,v=a.$createElement,_=a._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[_("h1",{attrs:{id:"分片上传"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#分片上传"}},[a._v("#")]),a._v(" 分片上传")]),a._v(" "),_("p",[a._v("关于大文件分片上传的一些思考")]),a._v(" "),_("h2",{attrs:{id:"浏览器"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#浏览器"}},[a._v("#")]),a._v(" 浏览器")]),a._v(" "),_("h3",{attrs:{id:"创建文件-hash"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创建文件-hash"}},[a._v("#")]),a._v(" 创建文件 "),_("code",[a._v("hash")])]),a._v(" "),_("ul",[_("li",[a._v("创建文件的 "),_("code",[a._v("hash")]),a._v(" 值。")]),a._v(" "),_("li",[a._v("提交上传文件基本数据和文件 "),_("code",[a._v("hash")]),a._v(" 值。")]),a._v(" "),_("li",[a._v("如果存在的话,忽略本次文件上传;并将该文件路径指向用户服务器存储空间中。")])]),a._v(" "),_("p",[a._v("当文件不存在或上传一部分文件数据时,进入下一流程。")]),a._v(" "),_("h3",{attrs:{id:"文件分片"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#文件分片"}},[a._v("#")]),a._v(" 文件分片")]),a._v(" "),_("ul",[_("li",[a._v("访问服务器获取文件分片最大值。")]),a._v(" "),_("li",[a._v("通过循环切割文件,并创建每一个分片的 "),_("code",[a._v("hash")])])]),a._v(" "),_("h3",{attrs:{id:"文件上传"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#文件上传"}},[a._v("#")]),a._v(" 文件上传")]),a._v(" "),_("ul",[_("li",[a._v("根据首次与服务器通信结果,判断是否为断点上传")]),a._v(" "),_("li",[a._v("如果是断点上传,判断断点位置,")]),a._v(" "),_("li",[a._v("获取对应分片,以此分片为起点开始上传")])]),a._v(" "),_("h3",{attrs:{id:"进度条"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#进度条"}},[a._v("#")]),a._v(" 进度条")]),a._v(" "),_("ul",[_("li",[a._v("不论是断点还是首次上传文件,进度条为已传分片数除总分片数")])]),a._v(" "),_("hr"),a._v(" "),_("h2",{attrs:{id:"服务器"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#服务器"}},[a._v("#")]),a._v(" 服务器")]),a._v(" "),_("h3",{attrs:{id:"检测文件-hash"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#检测文件-hash"}},[a._v("#")]),a._v(" 检测文件 "),_("code",[a._v("hash")])]),a._v(" "),_("h4",{attrs:{id:"数据库检测-hash-是否存在"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#数据库检测-hash-是否存在"}},[a._v("#")]),a._v(" 数据库检测 "),_("code",[a._v("hash")]),a._v(" 是否存在")]),a._v(" "),_("p",[a._v("存在")]),a._v(" "),_("ul",[_("li",[a._v("将该文件与用户传入文件基本信息结合")]),a._v(" "),_("li",[a._v("存入云空间")]),a._v(" "),_("li",[a._v("通知前端,文件秒传成功")])]),a._v(" "),_("hr"),a._v(" "),_("p",[a._v("不存在或断点")]),a._v(" "),_("ul",[_("li",[a._v("创建临时上传空间(存在时间为最后断点上传后的 "),_("code",[a._v("24")]),a._v(" 个小时或上传成功后)")]),a._v(" "),_("li",[a._v("用户云盘数据中写入临时上传信息(存在时间为最后断点上传后的 "),_("code",[a._v("24")]),a._v(" 个小时或上传成功后)")]),a._v(" "),_("li",[a._v("如果是断点之后续传,告知前端最后一个分片 "),_("code",[a._v("hash")])])]),a._v(" "),_("h4",{attrs:{id:"文件上传-2"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#文件上传-2"}},[a._v("#")]),a._v(" 文件上传")]),a._v(" "),_("ul",[_("li",[a._v("获取分片数据,存入临时上传空间")]),a._v(" "),_("li",[a._v("上传所有分片,合并分片,创建文件 hash,与文件原 hash 比对")]),a._v(" "),_("li",[a._v("hash 不一致,告知用户上传失败")]),a._v(" "),_("li",[a._v("hash 确认无误,放入用户云盘中")]),a._v(" "),_("li",[a._v("清理数据")])])])}),[],!1,null,null,null);v.default=s.exports}}]);
|