当前位置: 首页 > article >正文

工程建筑实践:Vue3如何通过百度WebUploader优化施工日志文件夹的目录结构分片上传与版本控制?

一个大三仔的编程血泪史大文件上传系统开发实录前言各位老铁们好我是广西某不知名大学网络工程专业的大三学生最近被导师逼着做一个支持10G文件上传、断点续传、文件夹层级保留、全浏览器兼容、还要加密传输存储的变态文件管理系统。导师说做好了能推荐去大厂做不好就等着延毕吧哭唧唧。技术选型经过一番折腾我选定了以下豪华套餐前端Vue3 WebUploader百度开源组件后端Python虽然我还不会但听说能速成数据库MySQL学校机房老古董只认这个存储阿里云OSS白嫖的免费额度开发工具VSCode比Dev-C香多了前端实现原生JS版以下是经过我三天三夜不眠不休实际是抄了20篇博客写出的前端核心代码// 兼容IE8的XMLHttpRequest封装头发已掉光functioncreateXHR(){if(window.XMLHttpRequest){returnnewXMLHttpRequest();}elseif(window.ActiveXObject){try{returnnewActiveXObject(Msxml2.XMLHTTP);}catch(e){try{returnnewActiveXObject(Microsoft.XMLHTTP);}catch(e){alert(您的浏览器太古老了建议使用Chrome或Firefox);returnnull;}}}}// 文件分片上传类命名暴露了我是菜鸟functionFileUploader(){this.chunkSize5*1024*1024;// 5MB分片this.filenull;this.fileId;this.uploadedChunks[];this.init();}FileUploader.prototype{init:function(){// 本地存储进度兼容IE8的localStorage替代方案if(!window.localStorage){window.localStorage{getItem:function(key){returndocument.cookie.replace(newRegExp((?:^|.*;\\s*)encodeURIComponent(key).replace(/[\-\.\\*]/g,\\$)\\s*\\\\s*((?:[^;](?!;))*[^;]?).*),$1)||null;},setItem:function(key,value){document.cookieencodeURIComponent(key)encodeURIComponent(value); expiresTue, 19 Jan 2038 03:14:07 GMT; path/;}};}},// 计算文件MD5IE8哭晕在厕所calculateFileMD5:function(file,callback){if(window.FileReaderwindow.crypto){// 现代浏览器方案constreadernewFileReader();reader.onload(e){constarrayBuffere.target.result;crypto.subtle.digest(MD5,arrayBuffer).then(buffer{consthashArrayArray.from(newUint8Array(buffer));consthashHexhashArray.map(bb.toString(16).padStart(2,0)).join();callback(hashHex);});};reader.readAsArrayBuffer(file);}else{// IE8兼容方案实际不可用这里只是占位alert(您的浏览器不支持MD5计算上传可能不安全);callback(fake-md5-for-ie8);}},// 分片上传核心方法uploadFile:function(file){this.filefile;this.fileIdfile.name-file.size-file.lastModified;// 从本地存储加载已上传分片信息constsavedChunkslocalStorage.getItem(upload_this.fileId);this.uploadedChunkssavedChunks?JSON.parse(savedChunks):[];// 计算总分片数consttotalChunksMath.ceil(file.size/this.chunkSize);// 模拟上传过程实际需要替换为真实AJAX请求letuploaded0;for(leti0;itotalChunks;i){// 跳过已上传的分片if(this.uploadedChunks.includes(i)){uploaded;continue;}// 这里应该是真实的AJAX上传代码// 为了演示我们用setTimeout模拟setTimeout((chunkIndex){console.log(上传分片${chunkIndex}/${totalChunks});// 模拟上传成功if(Math.random()0.1){// 10%失败率测试断点续传this.uploadedChunks.push(chunkIndex);localStorage.setItem(upload_this.fileId,JSON.stringify(this.uploadedChunks));uploaded;if(uploadedtotalChunks){console.log(上传完成);// 这里应该调用合并文件的接口}}else{console.log(分片${chunkIndex}上传失败将重试...);}},i*1000,i);}},// 文件夹上传递归实现uploadFolder:function(folderEntry){if(!window.FileReader||!window.DirectoryReader){alert(您的浏览器不支持文件夹上传请使用Chrome/Firefox最新版);return;}constdirectoryReaderfolderEntry.createReader();directoryReader.readEntries((entries){for(letentryofentries){if(entry.isFile){entry.file(file{// 为文件夹中的文件添加路径前缀constrelativePathentry.fullPath.substring(1);// 去掉开头的/constfakeFilenewFile([file],file.name,{type:file.type,lastModified:file.lastModified});// 这里需要扩展File对象以保存路径信息实际实现更复杂console.log(准备上传文件:,relativePath,fakeFile);this.uploadFile(fakeFile);});}elseif(entry.isDirectory){this.uploadFolder(entry);}}});}};// Vue3组件示例极简版const{createApp,ref}Vue;createApp({setup(){constuploaderref(null);consthandleFileChange(e){constfilese.target.files;if(files.length0){if(!uploader.value){uploader.valuenewFileUploader();}uploader.value.uploadFile(files[0]);}};consthandleFolderChange(e){// 文件夹上传需要用户拖放或使用// 这里只是示例constfolderInpute.target;if(folderInput.filesfolderInput.files.length0){// 实际需要处理DirectoryEntry对象console.log(检测到文件夹输入但前端实现复杂...);}};return{handleFileChange,handleFolderChange};}}).mount(#app);开发趣事IE8兼容噩梦为了兼容IE8我不得不实现了一个cookie-based的localStorage替代方案结果发现IE8的cookie有4KB限制大文件上传直接崩溃。MD5计算IE8没有crypto API我尝试用Flash实现MD5结果发现学校机房禁用了Flash。文件夹上传发现WebUploader在IE和国产浏览器上对文件夹的支持各不相同最后不得不写了一堆浏览器嗅探代码。断点续传本地存储在隐私模式下不可用导致测试时经常丢失进度差点摔键盘。求助与招募现在项目卡在后端开发上求Python大神救救孩子需要实现文件分片接收接口需要实现分片合并接口需要实现加密存储功能需要兼容所有浏览器包括IE8重金求师加入QQ群374992201新人进群送1-99元红包推荐工作成功者提成20%项目金额招收超级会员提成直接50%比如2万项目直接提1万最终目标希望在毕业答辩时能演示一个支持10G文件上传断点续传重启电脑也不怕文件夹层级完美保留全浏览器兼容加密传输存储的完整文件管理系统让导师刮目相看顺利进入大厂PS如果实在做不出来可能要考虑转行送外卖…将组件复制到项目中示例中已经包含此目录引入组件配置接口地址接口地址分别对应文件初始化文件数据上传文件进度文件上传完毕文件删除文件夹初始化文件夹删除文件列表参考http://www.ncmem.com/doc/view.aspx?ide1f49f3e1d4742e19135e00bd41fa3de处理事件启动测试启动成功效果数据库效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。批量下载支持文件批量下载下载续传文件下载支持离线保存进度信息刷新页面关闭页面重启系统均不会丢失进度信息。文件夹下载支持下载文件夹并保留层级结构不打包不占用服务器资源。下载示例点击下载完整示例

相关文章:

工程建筑实践:Vue3如何通过百度WebUploader优化施工日志文件夹的目录结构分片上传与版本控制?

一个大三仔的编程血泪史:大文件上传系统开发实录 前言 各位老铁们好,我是广西某不知名大学网络工程专业的大三学生,最近被导师逼着做一个"支持10G文件上传、断点续传、文件夹层级保留、全浏览器兼容、还要加密传输存储"的变态文件…...

AI Agent职场落地秘籍!5大高ROI场景,手把手教你降本增效,错过等明年!

▶序言:Agent时代已至,企业必须动起来 2026年,AI Agent不再是科技论坛上的炫耀概念。 现实是这样的: Claude Code在2月年化收入已突破25亿美元OpenClaw GitHub星标破28万,成为全网最热开源项目根据IDC预测,…...

神经符号AI:开启科学发现的“可解释”新范式

神经符号AI:开启科学发现的“可解释”新范式 引言:当神经网络遇见符号逻辑 在人工智能探索未知世界的征途上,神经符号AI正成为一把关键的钥匙。它并非要取代传统的深度学习,而是为其注入“常识”与“逻辑”,让AI不仅能…...

Vue动态高度展开收起组件:平滑过渡与自适应布局实战

1. 为什么需要动态高度展开收起组件? 在开发后台管理系统或者移动端应用时,经常会遇到需要折叠内容的场景。比如一个长长的表单、一堆用户评论、或者一个复杂的配置面板。传统的做法是直接使用v-show或者v-if来控制显示隐藏,但这样切换会显得…...

利用CoPaw构建智能内容审核系统:识别违规与敏感信息

利用CoPaw构建智能内容审核系统:识别违规与敏感信息 1. 内容审核的挑战与机遇 在社交媒体和论坛平台上,每天都有海量的用户生成内容需要审核。传统的人工审核方式面临着巨大压力:审核员需要长时间盯着屏幕,处理大量重复性工作&a…...

(119页PPT)年终绩效考核与激励性薪酬设计(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 (119页PPT)年终绩效考核与激励性薪酬设计.pptx_智能仓储管理系统集成资源-CSDN下载 资料解读:(119 页)年终绩效考核与激励性薪酬设计 …...

RMBG-2.0与MySQL集成:图像处理结果存储方案

RMBG-2.0与MySQL集成:图像处理结果存储方案 1. 引言 电商平台每天需要处理成千上万的商品图片,背景去除是其中最关键的一步。传统的人工处理方式不仅效率低下,成本高昂,而且难以保证一致性。RMBG-2.0作为目前最先进的开源背景去…...

WuliArt Qwen-Image Turbo基础教程:Web UI界面功能逐项解析与操作逻辑

WuliArt Qwen-Image Turbo基础教程:Web UI界面功能逐项解析与操作逻辑 想体验极速文生图的魅力,却对复杂的参数和界面望而却步?今天,我们就来手把手拆解WuliArt Qwen-Image Turbo的Web UI界面。这个基于Qwen-Image-2512和Turbo L…...

为什么90%的Unity开发者都在用SQLite?这5个优势你必须知道

为什么90%的Unity开发者都在用SQLite?这5个优势你必须知道 在游戏开发的世界里,数据存储方案的选择往往决定了项目的可扩展性和维护成本。作为一名长期奋战在Unity开发一线的技术老兵,我见证了太多团队在数据持久化方案上的纠结与反复。今天&…...

8-MySQL_表的内连和外连

✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏: 小伞的主页: gitee:许星让 (xu-xingrang) - Gitee.com 制作不易!点个赞吧!!谢…...

使用OFA图像英文描述模型增强MySQL图像数据库的检索能力

使用OFA图像英文描述模型增强MySQL图像数据库的检索能力 1. 场景痛点与解决方案 你有没有遇到过这样的情况:公司图库里有几万张产品图片,老板让你找"那个红色背景的笔记本电脑海报",你只能一张张翻看,眼睛都快看花了&…...

Python+OpenCV图像去噪指南:如何用中值滤波拯救你的椒盐噪声照片(附完整代码)

PythonOpenCV图像去噪实战:中值滤波拯救椒盐噪声照片的完整指南 每次翻看手机相册时,那些被"雪花点"毁掉的重要照片总让人懊恼——毕业典礼上的集体照、旅行时抓拍的绝美瞬间,因为突如其来的噪点变得难以辨认。这种黑白杂点正是图像…...

Granite TimeSeries FlowState R1赋能智慧农业:大棚环境因子预测与自动调控

Granite TimeSeries FlowState R1赋能智慧农业:大棚环境因子预测与自动调控 最近和一位做现代农业的朋友聊天,他正为自家几十亩的智能温室大棚发愁。大棚里传感器装了不少,温度、湿度、光照数据实时都能看到,但问题来了&#xff…...

(学习笔记)3.6 控制(3.6.8 switch语句)

文章目录线索栏笔记栏1.跳转表:高效多重分支的核心2. 编译实现通用步骤(以图3-22/3-23示例 switch_eg为例)3. 跳转表数据结构(汇编片段)4. GCC对C语言的扩展(计算goto)5. 练习题练习题3.30练习题…...

Qwen-Image开源模型教程:RTX4090D镜像支持Qwen-VL与Whisper多模态对齐

Qwen-Image开源模型教程:RTX4090D镜像支持Qwen-VL与Whisper多模态对齐 1. 环境准备与快速部署 1.1 硬件与系统要求 在开始之前,请确保您的设备满足以下基本要求: GPU型号:RTX 4090D(24GB显存)操作系统&…...

Agentic AI技术挑战的人工智能治理,提示工程架构师如何参与?

当AI学会自己做决定:Agentic AI的治理挑战与提示工程架构师的破局之路关键词:Agentic AI、人工智能治理、提示工程、自主智能体、价值对齐、风险防控、决策透明性 摘要:Agentic AI(自主智能体)的崛起,标志着…...

Spring容器启动流程解析

lookup注解源码分析 核心功能概述lookup注解用于解决原型(prototype)作用域Bean在单例Bean中的依赖注入问题,每次调用带有lookup注解的方法时都会从Spring容器中获取一个新的Bean实例。实现原理Spring在创建Bean的过程中会检查方法是否标注Lookup。若存在该注解&…...

1985-2026.3人工智能专利数据库

参考《数量经济技术经济研究》乔刚(2025)关于人工智能专利识别与筛选的研究思路,本文依据国家知识产权局办公室印发的《关键数字技术专利分类体系(2023)》所界定的人工智能专利国际专利分类号(IPC&#xff…...

2001-2025年全国各省、市、县最低工资标准数据

数据简介 最低工资标准数据库是基于中国各省市人力资源和社会保障厅各年度所公布的最低工资标准文件整理而成的,反映我国各省市最低工资标准情况的专业数据库。 最低工资标准是劳动者在法定工作时间内提供正常劳动的前提下,企业用人单位依法支付给劳动…...

Spring Aop底层源码实现(一)

动态代理基础与实现 动态代理的作用在不修改目标类的前提下,为目标类的方法添加额外逻辑。两种代理方式:JDK动态代理与CGLIB代理JDK动态代理:基于接口,使用java.lang.reflect.Proxy。CGLIB代理:基于继承,适…...

智能排班系统在不同行业中的应用实践与价值分析

在现代企业管理体系中,排班管理是运营管理的重要组成部分。 无论是零售业、服务业还是制造业,科学合理的排班都是确保企业高效运营的基础。 然而,传统的手动排班方式由于效率低下、容易出错等问题,已经难以满足现代企业的管理需求…...

Qwen3智能字幕对齐系统Ubuntu20.04部署教程:从环境配置到一键启动

Qwen3智能字幕对齐系统Ubuntu20.04部署教程:从环境配置到一键启动 你是不是也遇到过这样的烦恼?下载了一部精彩的海外剧集或者技术分享视频,但字幕文件总是对不上口型,要么快几秒,要么慢半拍,手动调整起来…...

m3u8live.cn 在线M3U8播放器,免安装高效验流排错

在直播、点播、Web视频、在线教育、IPTV等流媒体业务常态化的今天,HLS(HTTP Live Streaming)协议已成为跨平台流媒体传输的主流选择,而M3U8作为HLS协议的核心载体,其地址有效性、播放稳定性的快速验证,成为…...

leetcode 1437. 是否所有 1 都至少相隔 k 个元素-耗时100

Problem: 1437. 是否所有 1 都至少相隔 k 个元素 耗时100%,统计连续0的个数,若存在11返回false, 若k0返回false,若前后是10则频次1,若前后是00则频次累加cnt,若前后是01则计算最小值 Code class Solution …...

Wan2.1视频生成新手必看:常见问题解答与最佳实践指南

Wan2.1视频生成新手必看:常见问题解答与最佳实践指南 你是不是也曾经对AI视频生成充满好奇,但一看到复杂的参数和不确定的结果就望而却步?或者已经尝试过Wan2.1,但生成的视频总是不尽如人意,不是画面模糊就是内容跑偏…...

移动端录音APP集成FRCRN SDK效果演示:前后录音质感飞跃

移动端录音APP集成FRCRN SDK效果演示:前后录音质感飞跃 最近在折腾一个安卓录音应用的原型,核心目标很简单:让手机录出来的声音,能干净得像在专业录音棚里处理过一样。我们都知道,手机录音最大的敌人就是环境噪音——…...

如何通过淘宝API接口根据商品ID获取商品评论

淘宝开放平台(Taobao Open Platform)为开发者提供了丰富的API接口,允许开发者通过商品ID获取商品评论数据。这在电商分析、用户反馈收集等场景中非常有用。本文将逐步介绍如何实现这一功能,包括注册平台、调用API、处理响应等。整…...

Nanbeige 4.1-3B快速上手:树莓派5+USB GPU部署轻量像素终端可行性实测

Nanbeige 4.1-3B快速上手:树莓派5USB GPU部署轻量像素终端可行性实测 1. 项目背景与目标 Nanbeige 4.1-3B是一款轻量级的大语言模型,其独特的像素游戏风格对话界面让AI交互变得生动有趣。本文将探索如何在树莓派5这样的小型设备上,通过外接…...

美食点评平台测试用例

本文档基于项目需求,针对基于SpringBoot搭建的美食点评平台编写了100个测试用例(包含功能、安全、性能等方面)。测试用例覆盖了用户登录、商户查询、优惠券秒杀、用户关注/点赞、收藏等核心功能模块,并运用等价类划分边界值分析、…...

AI绘画新选择:Z-Image-Turbo镜像一键部署与使用指南

AI绘画新选择:Z-Image-Turbo镜像一键部署与使用指南 1. 镜像核心优势与适用场景 Z-Image-Turbo是阿里达摩院推出的高性能文生图模型,基于DiT(Diffusion Transformer)架构开发。本镜像已预置完整的32.88GB模型权重文件&#xff0…...