腾讯云主机做网站杭州公司网站制作

张小明 2026/1/10 17:01:46
腾讯云主机做网站,杭州公司网站制作,什么是企业vi设计,福州门户网站建设vue3Ts实现大文件上传 原理 分片上传的原理就像是把一个大蛋糕切成小块一样。首先就是将上传的大文件分成许多小块#xff0c;每个小块大小相同#xff0c;然后逐步上传这些小块到服务器#xff0c;上传的时候#xff0c;可以同时上传多个小块#xff0c;也可以一个一个上…vue3Ts实现大文件上传原理分片上传的原理就像是把一个大蛋糕切成小块一样。首先就是将上传的大文件分成许多小块每个小块大小相同然后逐步上传这些小块到服务器上传的时候可以同时上传多个小块也可以一个一个上传上传每个小块之后服务器会保存这些小块并记录它们的顺序和位置当我们所有的小块上传完成之后服务器会把这些小块按照正确的顺序拼接起来还原成我们的大文件( 下图就是基本的流程 )。1.项目搭建实现大文件上传前端vue3 ts2.读取文件在我们搭建好之后通过监听 input 的 change 事件当提交文件之后在回调函数中拿到对应文件。templatedivh1大文件上传/h1input typefilechangehandleUpload/div/templatescript setup langtsconsthandleUpload(e:Event){// console.log((e.target as HTMLInputElement).files); // 伪数组constfiles(e.targetasHTMLInputElement).files// 如果拿到文件返回if(!files)return//读取文件console.log(files[0]);}/script3.文件分片文件分片我们会用到 Blob 对象的 slice 方法我们在上一步获得的 File 对象它是继承于 Blob 的。// 1MB 1024KB 1024 * 1024BconstCHUNK_SIZE1024*1024// 1MB// 在这里进行文件的分片constcreateChunks(file:File){// 设置开始的节点let cur0// 空数组用来存储分割后的文件块let chunks[]// 循环遍历文件将它分割成多个块while(curfile.size){// 提取 start 到 end 之间的内容constblobfile.slice(cur,curCHUNK_SIZE)// 提取出来的内容添加到 chunks 数组中chunks.push(blob)// 更新读取的位置curCHUNK_SIZE}// 返回文件块的数组returnchunks}consthandleUpload(e:Event){// console.log((e.target as HTMLInputElement).files); // 伪数组constfiles(e.target asHTMLInputElement).files// 如果拿到文件返回if(!files)return//读取文件console.log(files[0])// 文件切片constchunkscreateChunks(files[0])console.log(chunks);}4.hash 算法切片完成之后开始计算 hash 值需要安装 spark-md5 工具因为计算 hash 值需要用到。constcalculateHash(chunks:Blob[]){returnnewPromise((resolve){lettarget:Blob[][]// 在每次计算哈希之前清空target数组// 创建一个新的SparkMD5对象用于计算MD5哈希值constsparknewSparkMD5.ArrayBuffer();// 遍历每个Blob片段chunks.forEach((chunk,index){// 如果是第一个或最后一个片段则将其完整地加入target数组if(index0||indexchunks.length-1){target.push(chunk);}else{// 如果是中间的片段则只取片段的前2字节、中间2字节和最后2字节target.push(chunk.slice(0,2));target.push(chunk.slice(CHUNK_SIZE/2,CHUNK_SIZE/22));target.push(chunk.slice(CHUNK_SIZE-2,CHUNK_SIZE));}});// 创建一个新的FileReader对象constfileReadernewFileReader();// 读取target数组中的Blob数据为ArrayBufferfileReader.readAsArrayBuffer(newBlob(target));// 当FileReader读取完成时触发fileReader.onload(e){// 将读取的结果追加到SparkMD5对象中spark.append((e.targetasFileReader).resultasArrayBuffer);// 计算最终的MD5哈希值consthashspark.end();// 清空target数组避免重复使用旧数据target[];// 解析结果resolve(hash);};});};5.文件合并合并需要我们前端去进行请求到后端服务器并且传输需要的数据然后进行操作constmergeRequest(){fetch(http://localhost:3000/merge,{method:POST,headers:{Content-Type:application/json},body:JSON.stringify({fileHash:fileHash.value,fileName:fileName.value,size:CHUNK_SIZE})}).then((){alert(合并成功)})}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

万网网站搬家游戏模型外包网站

Mac系统Arduino开发环境搭建全攻略:从零开始的实战指南 你是不是也遇到过这样的场景?刚买回一块Arduino Nano,兴冲冲地插上Mac电脑,打开Arduino IDE却发现“端口”菜单灰得像冬天的湖面——什么都选不了。点一下“上传”&#xf…

张小明 2026/1/10 6:57:02 网站建设

六安网站定制北海住房和城乡建设局官方网站

还在为展示时间线内容而头疼?别担心!今天我要带你用TimelineJS这款实用工具,轻松创建令人惊艳的时间轴展示。无论你是内容创作者、教育工作者还是营销人员,都能在30分钟内掌握这项技能。 【免费下载链接】TimelineJS 项目地址:…

张小明 2026/1/10 6:55:56 网站建设

秦皇岛百度网站排名专门培训seo的网站

Excalidraw安全性评估:数据本地存储无泄露风险 在远程协作日益成为常态的今天,团队对可视化工具的需求早已超越“能画图”的基本功能。从产品原型到系统架构设计,一张白板可能承载着尚未公开的技术方案、敏感业务流程甚至核心知识产权。一旦…

张小明 2026/1/10 7:16:56 网站建设

营销型网站收费万柏林区静默管理

LangFlow社交媒体舆情监控系统设计思路 在当今信息爆炸的时代,一条微博、一段短视频评论,都可能在几小时内演变成一场席卷全网的舆论风暴。企业公关团队常常疲于应对突发负面舆情,而传统监控工具又难以理解语义、判断情绪、识别潜在风险——直…

张小明 2026/1/10 6:55:55 网站建设

做室内意向图的网站wordpress 美化 插件

云盾与WAF:构建企业网络安全的双重防线在数字化转型加速推进的今天,企业网络安全面临着前所未有的挑战。据Gartner数据显示,2023年全球企业因网络攻击造成的平均损失已达445万美元,其中Web应用攻击占比超过35%。作为防御体系的核心…

张小明 2026/1/10 7:08:07 网站建设

互助盘网站开发二级栏目网站

Excalidraw与其他白板工具的数据迁移方案 在远程协作日益成为主流工作模式的今天,团队对可视化表达的需求不断攀升。从产品原型到系统架构设计,虚拟白板早已不再是“可有可无”的辅助工具,而是承载组织知识资产的核心载体。然而,随…

张小明 2026/1/10 7:17:44 网站建设