news 2026/5/30 21:08:44

机械制造WebUploader如何在局域网处理大文件断点续传?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机械制造WebUploader如何在局域网处理大文件断点续传?

《一个码农的奇幻外包漂流记》

需求分析会:当甲方爸爸说出"简单"二字时…

各位老铁们好!我是辽宁沈阳一名"资深"前端码农(资深=头发少)。刚接到个外包需求,看完后我直接表演了个东北式懵逼:

甲方需求翻译大赛

  • “要支持20G文件” → “希望你电脑硬盘够大”
  • “兼容IE9” → “希望你心态够好”
  • “1000+文件的文件夹结构” → “希望你记忆力超群”
  • “预算100元含3年维护” → “希望你家里有矿”
  • “7×24小时支持” → “希望你不需要睡觉”

技术选型:穷且益坚版解决方案

前端部分(Vue3+原生JS缝合怪版)

// 文件夹上传器(贫困版)classDiaoSiFolderUploader{constructor(){this.chunkSize=5*1024*1024;// 5MB一片this.maxTry=99;// 最大重试次数(因为甲方网络是2G)this.debugMode=true;// 控制台输出"假装在工作"}// 加密函数(表演型加密)fakeEncrypt(data){return`${JSON.stringify(data)}`;}// IE9特供版进度条(用div模拟)updateProgressIE9(percent){constbar=document.getElementById('ie9-progress')||document.createElement('div');bar.innerHTML=`${percent}% (IE9用户请耐心等待,先去泡个茶)`;}// 递归上传文件夹(血压升高函数)asyncuploadFolder(folder,path=''){returnnewPromise((resolve,reject)=>{try{// 假装在处理文件夹this.debugLog(`正在处理文件夹:${path}`);// 用setTimeout模拟延迟(让甲方觉得你在努力)setTimeout(async()=>{for(letentryoffolder.entries()){if(entry.isDirectory){awaitthis.uploadFolder(entry,`${path}/${entry.name}`);}else{awaitthis.uploadFile(entry,path);}}resolve();},500);// 故意延迟让进度条看起来更真实}catch(e){reject(newError('文件夹处理出错,建议甲方加钱'));}});}// 断点续传(localStorage硬撑版)resumeUpload(file){constsaved=JSON.parse(localStorage.getItem(file.name)||'{"chunks":[]}');// 计算未上传的切片consttotalChunks=Math.ceil(file.size/this.chunkSize);constremaining=Array.from({length:totalChunks},(_,i)=>i).filter(i=>!saved.chunks.includes(i));// 逐个上传(假装很可靠)remaining.forEach(chunkIndex=>{constchunk=file.slice(chunkIndex*this.chunkSize,Math.min(file.size,(chunkIndex+1)*this.chunkSize));this.uploadChunk(chunk,chunkIndex).then(()=>{saved.chunks.push(chunkIndex);localStorage.setItem(file.name,JSON.stringify(saved));});});}debugLog(msg){if(this.debugMode){console.log(`[表演时间${newDate().toLocaleTimeString()}]${msg}`);}}}

兼容性处理方案(辽宁特供版)

浏览器应对策略心理承受力
IE9加入检测代码自动弹出"升级浏览器"弹窗已经看开
Windows 7老机器降级使用jQuery(别问为什么)心如止水
20G文件上传显示"正在压缩"然后偷偷降低画质良心?不存在的
100元预算在代码里加入"甲方专属彩蛋"创意无价

加群福利大放送(东北老铁版)

QQ群374992201神秘福利

  • 入群即送《如何优雅拒绝甲方》电子书
  • 分享"我的外包血泪史"系列文章
  • 免费获取"代码跑不通的100种原因"
  • 参与"猜猜这次甲方会提什么需求"竞猜

特别活动

  • 推荐项目成功提成50%(前提是甲方肯付钱)
  • 帮写辞职信服务(外包做不下去时使用)
  • 代购沈阳鸡架(代码写饿了必备)

生存法则:如何在预算100元下生存

经过和甲方大战三百回合,我总结了以下生存秘籍:

  1. 需求管理:所有功能都回答"可以做,但要加钱"
  2. 时间管理:使用"在调试了"+"马上就好"组合技
  3. 技术方案:GitHub搜相似项目然后改CSS颜色
  4. 交付策略:先给个能运行的demo,剩下的等"下个版本"
  5. 终极奥义:在项目中期突然"生病住院"

所以各位东北老铁、全国同行们,救救孩子吧!这项目要是搞不定,我就只能回老家卖烤冷面了(其实生意还不错?)🍜

(正经建议:大文件上传可以考虑用现成的云服务SDK,比自己造轮子靠谱,虽然100块可能连流量费都不够…)

将组件复制到项目中

示例中已经包含此目录

引入组件

配置接口地址

接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表
参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de

处理事件

启动测试

启动成功

效果

数据库

效果预览

文件上传

文件刷新续传

支持离线保存文件进度,在关闭浏览器,刷新浏览器后进行不丢失,仍然能够继续上传

文件夹上传

支持上传文件夹并保留层级结构,同样支持进度信息离线保存,刷新页面,关闭页面,重启系统不丢失上传进度。

下载示例

点击下载完整示例

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 16:27:20

学霸同款10个AI论文软件,专科生搞定毕业论文!

学霸同款10个AI论文软件,专科生搞定毕业论文! AI工具如何助力论文写作,专科生也能轻松应对 在当今这个信息爆炸的时代,撰写一篇高质量的毕业论文对很多专科生来说是一项挑战。尤其是面对复杂的选题、繁重的文献整理以及反复的修…

作者头像 李华
网站建设 2026/5/30 7:13:32

支持用户上传多种格式的业务文件的自定义表单源码系统

温馨提示:文末有资源获取方式 在数据驱动决策的时代,表单不仅是收集信息的工具,更是企业重要的数据入口。一个设计粗糙、功能单一、数据孤岛式的表单系统,会浪费潜在的商业价值。一套面向企业级应用设计的万能表单系统源码&#x…

作者头像 李华
网站建设 2026/5/23 17:15:42

计算机毕业设计springboot医疗健康档案信息可视化系统 基于SpringBoot的个人健康医疗数据可视化管理系统 智慧医疗环境下电子健康档案可视化平台的设计与实现

计算机毕业设计springboot医疗健康档案信息可视化系统0tz3n013 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着医疗信息化进程的持续深入以及大数据技术在医疗卫生领域的广…

作者头像 李华
网站建设 2026/5/30 15:50:51

【毕业设计】SpringBoot+Vue+MySQL 大学生心理健康管理系统平台源码+数据库+论文+部署文档

摘要 随着社会快速发展,大学生心理健康问题日益受到关注。学业压力、人际关系、就业焦虑等因素导致心理问题频发,传统心理咨询方式效率低、覆盖面窄,难以满足需求。高校亟需一套智能化、系统化的心理健康管理平台,实现心理问题早…

作者头像 李华
网站建设 2026/5/24 7:33:47

Flink 1.10/1.11 内存配置从“heap 时代”到“process/flink 时代”

1. 迁移必须知道的“硬规则” 旧版本&#xff08;TM < 1.10 / JM < 1.11&#xff09;很多内存参数即使不配也能跑&#xff0c;因为默认值很全。 新版本开始&#xff0c;至少要显式配置下面这些中的一类&#xff0c;否则会直接失败&#xff1a; TaskManager 至少配置一项&…

作者头像 李华
网站建设 2026/5/29 13:16:51

Fetch MCP

要让TRAE这个智能编程助手的能力突破自身限制&#xff0c;直接与外部世界互动&#xff0c;关键就在于为其配置合适的“工具扩展包”&#xff0c;即MCP Server。Fetch MCP通常指一类能让TRAE&#xff08;通过其智能体&#xff09;访问和获取网络资源的MCP服务。 下面从配置到优…

作者头像 李华