军工科研平台如何用HTML+PHP实现实验过程视频的分片加密回溯上传?
开发者日记 - 大文件传输系统开发实录日期2023年11月15日天气阴项目背景与需求梳理作为江苏的一名独立开发者近期承接了一个企业级文件传输系统项目核心需求如下大文件支持单文件20GB需兼容文件夹上传保留层级结构。断点续传跨会话、跨设备重启电脑后仍可恢复。全平台兼容Windows/macOS/Linux浏览器覆盖IE8到Chrome/Firefox/Safari等。技术栈前端Vue3 WebUploader或H5 API后端PHP MySQL记录分片信息存储华为云OBS对象存储特殊要求免费开源代码、7×24小时技术支持通过QQ群374992201。技术选型与挑战1. 上传组件选择WebUploader兼容IE8支持分片、断点续传但需手动封装文件夹解析逻辑。H5 File API现代浏览器支持良好但IE8/9需Polyfill且文件夹上传需依赖webkitdirectory非标准。决策以WebUploader为主H5作为降级方案通过User-Agent判断浏览器类型动态切换。2. 断点续传设计分片存储将大文件切分为5MB分片上传时记录已完成的分片序号。进度持久化前端使用localStorage或IndexedDB存储临时进度跨会话。后端MySQL表记录文件唯一标识MD5、总分片数、已上传分片列表。跨设备恢复通过文件MD5校验匹配历史记录从华为云OBS合并已上传分片。3. 文件夹上传实现WebUploader扩展监听directory事件递归解析文件夹结构生成扁平化的文件路径列表如/parent/child/file.txt。后端处理接收路径信息在华为云OBS中按原路径创建空文件夹通过putObject设置Content-Type: application/directory。核心代码实现前端Vue3 WebUploader// src/components/Uploader.vueimportWebUploaderfromwebuploader;importwebuploader/dist/webuploader.css;exportdefault{mounted(){constuploaderWebUploader.create({swf:/path/to/webuploader.swf,// IE8/9兼容server:/api/upload,chunked:true,chunkSize:5*1024*1024,// 5MB分片formData:{fileMd5:,// 通过后端接口预先计算isDir:false// 标记是否为文件夹},files:[]// 存储文件夹结构});// 监听文件夹选择仅现代浏览器document.getElementById(filePicker).addEventListener(change,(e){constfilese.target.files;if(files.lengthfiles[0].webkitRelativePath){// 递归解析文件夹constparseDir(file,path){constfullPathpathfile.name;if(file.isDirectory){// 模拟文件夹上传实际需后端支持return;}uploader.addFiles({name:file.name,relativePath:fullPath,size:file.size,type:file.type});};Array.from(files).forEach(fileparseDir(file));}});// 断点续传从localStorage加载进度constresumeDatalocalStorage.getItem(upload_progress);if(resumeData){const{fileMd5,chunks}JSON.parse(resumeData);uploader.option(formData,{fileMd5,isDir:false});// 跳过已上传的分片需后端配合校验}// 上传完成合并分片uploader.on(uploadSuccess,(file,response){if(response.needMerge){fetch(/api/merge,{method:POST,body:JSON.stringify({fileMd5:response.fileMd5})});}});}};后端PHP MySQL// api/upload.phpprepare(INSERT INTO upload_chunks (file_md5, chunk_index, uploaded_at) VALUES (?, ?, NOW()) ON DUPLICATE KEY UPDATE updated_at NOW());$stmt-execute([$fileMd5,$chunkIndex]);// 上传分片到华为云OBS$obsClientnew\OBS\ObsClient([keyyour-access-key,secretyour-secret-key,endpointobs.cn-east-3.myhuaweicloud.com]);$obsPathuploads/{$fileMd5}/chunk_{$chunkIndex};$obsClient-putObject([Bucketyour-bucket,Key$obsPath,SourceFile$_FILES[file][tmp_name]]);// 检查是否所有分片已上传$chunksCount$pdo-query(SELECT COUNT(*) FROM upload_chunks WHERE file_md5 {$fileMd5})-fetchColumn();$totalChunks$_POST[totalChunks];// 前端传递总分片数if($chunksCount$totalChunks){echojson_encode([needMergetrue,fileMd5$fileMd5]);}else{echojson_encode([successtrue]);}?MySQL表结构CREATETABLEupload_chunks(idINTAUTO_INCREMENTPRIMARYKEY,file_md5VARCHAR(32)NOTNULL,chunk_indexINTNOTNULL,uploaded_atDATETIMEDEFAULTCURRENT_TIMESTAMP,UNIQUEKEY(file_md5,chunk_index));测试与优化兼容性测试IE8需引入es5-shim和json2.js。文件夹上传在Chrome中测试webkitRelativePathIE使用ActiveX模拟需用户授权。性能优化分片并发上传WebUploader默认支持3个并发。华为云OBS启用CDN加速下载。断点续传验证手动终止进程后重启上传时跳过已完成的分片。后续计划完善QQ群技术支持文档提供常见问题解答FAQ。开源代码至GitHub附详细部署说明。考虑增加WebSocket实时进度通知功能。今日总结核心功能已跑通但IE兼容性和文件夹解析仍需打磨。欢迎大神加入QQ群交流优化方案日记结束注实际项目中需补充安全校验如文件类型白名单、分片签名防篡改代码仅为示例框架需根据业务需求调整。安装环境PHP:7.2.14调整块大小NOSQLNOSQL不需要任何配置可以直接访问测试SQL创建数据库您可以直接复制脚本进行创建配置数据库连接安装依赖访问页面进行测试数据表中的数据效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。免费下载示例点击下载完整示例

相关新闻

AEB强标“倒计时”,哪些品牌要重点关注

AEB强标“倒计时”,哪些品牌要重点关注

2028年1月1日起,《轻型汽车自动紧急制动系统技术要求及试验方法》强制性国家标准拟正式实施。这意味着,AEB主动安全功能将成为中国市场乘用车的新车标配。这意味着,在接下来的两年时间,各家车企要完成后续新车型相关功能的供应商选…

2026/7/7 4:16:35 阅读更多 →
2025年前装突破200万辆!UWB数字钥匙爆单

2025年前装突破200万辆!UWB数字钥匙爆单

UWB(超宽带)数字钥匙,正在成为增强人车交互体验的关键一环。去年底,蔚来汽车披露,包括NT2.0平台在内的全系车型将支持iPhone UWB数字钥匙功能OTA更新交付,实现30米外定位感知,8米触发欢迎动画&a…

2026/7/8 15:22:10 阅读更多 →
‌工具ROI计算器:效率提升换算表

‌工具ROI计算器:效率提升换算表

自动化工具如何让测试团队年省1200人天?‌在软件测试领域,‌工具的ROI不是理论概念,而是可量化、可预测、可汇报的业务价值‌。根据2025–2026年国内头部互联网与金融科技企业的实证数据,一个成熟落地的自动化测试体系&#xff0c…

2026/7/8 21:14:00 阅读更多 →

最新新闻

掌握Docker多阶段构建镜像优化技巧

掌握Docker多阶段构建镜像优化技巧

掌握Docker多阶段构建镜像优化技巧在容器化技术日益普及的今天,Docker已成为开发与运维领域的基石工具。然而,随着应用复杂度提升,构建出的Docker镜像体积庞大、层数繁多、安全性欠佳等问题逐渐凸显,直接影响着部署效率、传输速度…

2026/7/8 23:59:03 阅读更多 →
前端构建工具插件开发与生态

前端构建工具插件开发与生态

前端构建工具插件开发与生态在当今快速迭代的前端开发领域,构建工具已成为项目开发的基石。从早期的Grunt、Gulp到如今占据主导地位的Webpack、Vite、Rollup和esbuild,构建工具的演进不仅提升了开发效率,更催生了一个庞大而活跃的插件生态。这…

2026/7/8 23:51:00 阅读更多 →
音乐解锁终极指南:5分钟掌握全平台加密音乐解密技术

音乐解锁终极指南:5分钟掌握全平台加密音乐解密技术

音乐解锁终极指南:5分钟掌握全平台加密音乐解密技术 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…

2026/7/8 23:51:00 阅读更多 →
在Windows上直接安装Android应用:APK Installer完整使用指南

在Windows上直接安装Android应用:APK Installer完整使用指南

在Windows上直接安装Android应用:APK Installer完整使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经希望在Windows电脑上直接运行Androi…

2026/7/8 23:48:59 阅读更多 →
PointNetVLAD vs. LPD-Net:3 种点云全局描述符在 Oxford RobotCar 数据集上的性能对比

PointNetVLAD vs. LPD-Net:3 种点云全局描述符在 Oxford RobotCar 数据集上的性能对比

PointNetVLAD与LPD-Net深度解析:Oxford RobotCar数据集上的点云全局描述符性能对比 1. 点云位置识别技术演进与核心挑战 在自动驾驶和机器人定位领域,点云全局描述符技术正经历着从手工特征到深度学习的范式转变。传统基于图像的位置识别方法受光照、季…

2026/7/8 23:46:58 阅读更多 →
目标检测算法选型指南:3 个维度解析单阶段与两阶段模型适用场景

目标检测算法选型指南:3 个维度解析单阶段与两阶段模型适用场景

目标检测算法选型指南:3 个维度解析单阶段与两阶段模型适用场景在计算机视觉领域,目标检测技术正以惊人的速度迭代更新。从工业质检中的微小缺陷识别到自动驾驶中的实时障碍物感知,再到手机端的人像虚化处理,不同场景对算法的需求…

2026/7/8 23:44:57 阅读更多 →

日新闻

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻