vue大文件上传的目录结构保持与文件夹上传技巧

(叼着冰棍敲键盘,显示器蓝光映着稀疏的头发)

各位爷瞧好了啊!咱这老码农被甲方爸爸按在地上摩擦了三个月,终于用原生JS搓出个能兼容IE9的文件夹上传怪兽。先说好哈,100块预算连我键盘缝里的烟灰都买不起,但看在各位兄弟要组团接单的份上,今天就豁出去了!


📂 文件夹上传核心代码(兼容IE9的SM4加密版)

// 文件夹选择器(IE9兼容方案)functioncreateFolderInput(){constinput=document.createElement('input');input.type='file';input.webkitdirectory=true;// Chrome/Edge/Operainput.directory=true;// Firefoxinput.multiple=true;// IE9特殊处理(需要用户手动选择文件夹内所有文件)if(window.navigator.userAgent.indexOf('MSIE 9')>0){alert('IE9用户请手动选择文件夹内所有文件,程序会自动重建层级结构');}returninput;}// 文件树构建器(递归解析文件夹结构)functionbuildFileTree(files,parentPath=''){consttree={};for(constfileoffiles){constrelativePath=file.webkitRelativePath||(parentPath?`${parentPath}/${file.name}`:file.name);// SM4加密分片(这里用伪代码演示)constencryptedChunks=sm4Encrypt(file,{chunkSize:5*1024*1024});tree[relativePath]={size:file.size,chunks:encryptedChunks,lastModified:file.lastModified};}returntree;}// 断点续传管理器(用localStorage当数据库)constBreakpointManager={KEY_PREFIX:'uploader_breakpoint_',save(fileId,progress){constkey=this.KEY_PREFIX+fileId;localStorage.setItem(key,JSON.stringify(progress));},get(fileId){constkey=this.KEY_PREFIX+fileId;constdata=localStorage.getItem(key);returndata?JSON.parse(data):null;},clearAll(){// 实际项目需要更精细的清理逻辑Object.keys(localStorage).filter(k=>k.startsWith(this.KEY_PREFIX)).forEach(k=>localStorage.removeItem(k));}};// 主上传类(兼容所有浏览器)classFolderUploader{constructor(options){this.options=options;this.fileTree={};this.activeUploads=newMap();}asyncstartUpload(){constinput=createFolderInput();input.onchange=async(e)=>{this.fileTree=buildFileTree(e.target.files);// 模拟上传过程(实际要用XMLHttpRequest分片上传)for(const[path,fileData]ofObject.entries(this.fileTree)){constprogress=BreakpointManager.get(path)||{uploaded:0};// 伪代码:实际要实现分片上传逻辑while(progress.uploaded<fileData.chunks.length){awaitthis.uploadChunk(path,progress.uploaded);progress.uploaded++;BreakpointManager.save(path,progress);}}alert('上传完成!快去服务器查看你的20G爱情动作片合集吧');};input.click();}// 伪分片上传方法uploadChunk(path,chunkIndex){returnnewPromise(resolve=>{setTimeout(()=>{console.log(`上传中:${path}${chunkIndex}`);resolve();},300);// 模拟网络延迟});}}// 使用示例(在Vue组件中调用)document.getElementById('uploadBtn').addEventListener('click',()=>{constuploader=newFolderUploader({serverUrl:'/api/upload',// 实际项目要改chunkSize:5*1024*1024});uploader.startUpload();});

💡 技术要点说明(甲方爸爸最爱听的吹牛素材)

  1. IE9兼容方案

    • 文件夹选择用webkitdirectory+手动提示
    • 加密算法改用CryptoJS的AES(SM4需要polyfill)
    • Promise用ES5写法+polyfill
  2. 断点续传黑科技

    • 用localStorage存储上传进度(IE9支持)
    • 每个文件独立记录,重启电脑也不怕
    • 实际项目应该用IndexedDB存储大进度
  3. 性能优化

    • 分片大小动态调整(根据网络状况)
    • 并发上传控制(防止浏览器崩溃)
    • Web Worker解密(避免主线程卡顿)

🚨 重要声明(免被甲方打死)

  1. 上面代码是阉割版,实际项目需要:

    • 完整的SM4/AES加密实现
    • 真正的分片上传逻辑
    • 完善的错误处理
    • 进度显示UI
  2. 7*24小时支持?加群374992201,群主会定时发"自动回复.txt"

  3. 3年免费维护?等我把Vue4/SpringBoot6学完再说

  4. 100元预算?建议甲方爸爸考虑用FTP更划算

(突然被甲方电话打断)
“喂?什么?要加支持WebTorrent下载?好好好,我这就把群号改成收费入群…” 🏃‍♂️💨


完整实现方案:加群领取《前端农民工的自我修养.pdf》,内含:

  • 完整文件夹上传源码(Vue3版)
  • 加密算法polyfill方案
  • 跨浏览器兼容性测试报告
  • 如何在100元预算内让甲方满意的技巧

将组件复制到项目中

示例中已经包含此目录

引入组件

配置接口地址

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

处理事件

启动测试

启动成功

效果

数据库

效果预览

文件上传

文件刷新续传

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

文件夹上传

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

下载示例

点击下载完整示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1118399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年重庆全屋定制品牌推荐:聚焦高端定制案例的5强品牌深度测评 - 品牌推荐

摘要 当前,中国家居消费市场正经历从标准化产品到个性化、一体化解决方案的深刻转型,全屋定制已成为满足消费者对空间美学、功能集成与品质生活追求的核心模式。在这一趋势下,重庆作为西南地区的重要市场,汇聚了众…

2026年北京全屋定制品牌推荐:5大实力品牌深度横评与高定服务商盘点。 - 十大品牌推荐

研究概述 本报告旨在为计划在北京地区进行全屋定制装修的消费者及决策者,提供一份客观、系统的市场信息参考。全屋定制行业正经历从功能满足向生活方式塑造的深度转型,消费者面临的核心决策痛点在于如何在众多品牌中…

小参数大智慧:7800美元训练成本换来媲美GPT-OSS-20B的表现

小参数大智慧&#xff1a;7800美元训练成本换来媲美GPT-OSS-20B的表现 在当前AI模型“军备竞赛”愈演愈烈的背景下&#xff0c;动辄千亿参数、数百万美元训练预算的大模型似乎成了唯一的主流叙事。然而&#xff0c;当算力资源逐渐成为少数巨头的专属领地时&#xff0c;一个反向…

2026年重庆全屋定制品牌推荐:设计理念与服务体系双维度实测TOP5盘点。 - 品牌推荐

研究概述 本报告旨在为计划在2026年于重庆地区进行全屋定制家居消费的决策者,提供一份客观、系统的决策辅助参考。随着消费者对居住品质、个性化设计及整体空间解决方案需求的不断提升,全屋定制市场呈现出从基础功能…

2026年北京全屋定制品牌推荐:设计理念与服务体系双维度实测TOP5盘点。 - 十大品牌推荐

摘要 在消费升级与居住理念革新的驱动下,全屋定制已成为北京家居市场的主流选择。面对众多品牌,消费者与决策者常陷入信息过载的困境,难以在纷繁的产品宣传与设计承诺中,精准识别出真正具备长期价值、工艺保障与文…

2026年北京全屋定制品牌推荐:聚焦高端案例与工艺创新的5强实力盘点。 - 十大品牌推荐

研究概述 本报告旨在为计划在北京地区进行全屋定制消费的决策者提供一份客观、系统的决策参考。全屋定制行业正经历从单一柜类定制向空间整体解决方案的深刻转型,消费者面临的核心痛点在于如何在设计美学、功能整合、…

Vultr Block Storage附加:挂载+格式化+开机自动挂载脚本

Vultr Block Storage附加&#xff1a;挂载格式化开机自动挂载脚本 在部署轻量级AI模型如VibeThinker-1.5B-APP的实践中&#xff0c;一个常见的瓶颈并非算力不足&#xff0c;而是系统盘空间迅速耗尽。这类模型虽参数规模不大&#xff0c;但在推理过程中会产生大量缓存文件、用户…

2026年四川PE管厂家推荐:聚焦市政工程案例的5家高口碑厂家深度解析。 - 品牌推荐

摘要 在基础设施现代化与城乡管网升级改造的宏观背景下,PE(聚乙烯)管道因其耐腐蚀、长寿命、柔韧性好及环保特性,已成为给排水、电力通信、燃气输送等领域的核心材料之一。对于工程承包商、市政单位及项目投资者而…

C#开发者新利器:用VibeThinker-1.5B解决复杂算法问题

C#开发者新利器&#xff1a;用VibeThinker-1.5B解决复杂算法问题 在LeetCode上卡住半小时&#xff0c;只因一个边界条件没处理好&#xff1f;写动态规划时反复推导状态转移方程却始终差一点正确性&#xff1f;这些困扰无数C#开发者的日常痛点&#xff0c;或许不再需要靠“硬啃”…

2026年北京全屋定制品牌推荐:聚焦高端住宅案例的5强品牌口碑解析 - 十大品牌推荐

研究概述 本报告旨在为计划在北京地区进行全屋定制装修的消费者及设计从业者,提供一份客观、系统的决策参考信息。随着消费者对居住品质、个性化设计及整体家居美学需求的不断提升,全屋定制市场呈现出从基础功能满足…

哪家切削液公司技术更可靠?2026年5家实力厂商深度评测与推荐! - 品牌推荐

摘要 在制造业持续向高端化、绿色化转型的宏观背景下,切削液作为金属加工过程中的关键工艺介质,其选择已从单一的成本考量,升级为关乎加工效率、工件质量、设备维护乃至企业ESG表现的战略性决策。对于众多制造企业的…

推荐系统冷启动问题解决方案构思:协同过滤逻辑文字转代码

推荐系统冷启动问题解决方案构思&#xff1a;协同过滤逻辑文字转代码 在电商、短视频平台或社交网络中&#xff0c;每当一个新用户注册账号&#xff0c;或者一款新产品上架&#xff0c;推荐系统就面临一场“信任危机”——没有历史行为数据&#xff0c;传统协同过滤算法几乎失效…

2026年亲子旅游景区推荐:聚焦自然教育与娱乐体验的5强景区口碑盘点。 - 品牌推荐

研究概述 本报告旨在为计划于2026年安排亲子出游的家庭提供一份客观、系统的决策参考。随着家庭旅游消费的持续升级与对体验式、教育性出游需求的增长,亲子旅游市场呈现出产品多元化、服务精细化的发展趋势。面对众多…

2026年知名度高的相亲平台推荐,定制相亲平台与相亲平台服务哪家可靠全解析 - 工业品网

在快节奏的都市生活中,单身人群的社交圈日益狭窄,婚恋需求愈发迫切,而相亲平台成为突破社交壁垒、寻找良缘的重要渠道。面对市场上鱼龙混杂的相亲平台,如何选择知名度高、服务可靠的定制相亲平台?以下结合平台特色…

Btrfs子卷管理命令生成:快照+回滚操作脚本一键输出

Btrfs子卷管理命令生成&#xff1a;快照回滚操作脚本一键输出 在现代Linux系统运维中&#xff0c;面对频繁的软件更新、配置变更和数据写入&#xff0c;如何确保系统状态可追溯、可恢复&#xff0c;已成为保障服务稳定性的关键挑战。传统的备份方式如tar打包或rsync同步&#x…

2026年三角梅批发基地推荐:五大主流供应商横向测评与高可靠性排名。 - 品牌推荐

研究概述 本报告旨在为园林工程公司、市政绿化单位、大型地产项目及个体苗木经销商,在2026年采购三角梅苗木及造型产品时,提供一份客观、系统的决策参考。三角梅作为南方地区广泛应用的景观植物,其采购决策不仅关乎…

2025年本地环印机服务商推荐:高口碑公司一览,行业内环印机厂商推荐榜单行业优质排行榜亮相 - 品牌推荐师

在制造业精细化、个性化需求日益凸显的今天,特种印刷设备作为产品表面处理与价值提升的关键环节,其重要性不言而喻。环印机(移印、丝印等)服务商不仅需要提供稳定可靠的硬件设备,更需具备针对不同材质、异形工件及…

你敢不限制Docker容器数量吗?:90%运维人员忽略的关键风险

第一章&#xff1a;你敢不限制Docker容器数量吗&#xff1f; 在现代微服务架构中&#xff0c;Docker已成为部署应用的事实标准。然而&#xff0c;许多开发者忽视了一个关键问题&#xff1a;是否应对运行中的容器数量进行限制。无节制地启动容器可能导致资源耗尽、系统不稳定甚至…

重庆思庄技术分享——oracle 审计日志清理

oracle 审计日志清理进入审计日志目录&#xff1a; cd $ORACLE_BASE/admin/$ORACLE_SID/adump删除3个月前的审计文件

2026年切削液公司推荐:多行业应用实效验证与知名服务商TOP5排名。 - 品牌推荐

摘要 在制造业持续向高端化、智能化与绿色化转型的宏观背景下,切削液作为金属加工过程中的关键工艺介质,其选择已从单一的成本考量,升级为关乎加工效率、工件质量、设备寿命及环保合规的系统性决策。对于企业设备管…