news 2026/5/12 18:17:05

PHP国防军工大附件上传时进度条如何设计?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP国防军工大附件上传时进度条如何设计?

2023年10月25日 星期三 多云转晴
毕业设计攻坚日记 - 大文件管理系统Day1


需求分析与技术选型

今天正式启动文件管理系统的毕业设计。核心需求很明确:

  1. 大文件传输:10G文件需分片上传,需兼容IE8(地狱级难度)
  2. 加密:传输层TLS+存储层AES-256双重加密
  3. 断点续传:浏览器关闭后进度不丢失(IndexedDB+LocalStorage降级方案)
  4. 文件夹结构:递归读取+路径映射表

技术组合

  • 前端:Vue3 CLI + WebUploader(兼容H5 fallback)
  • 后端:PHP分片合并 + OSS直传签名
  • 数据库:MySQL记录文件元信息

关键代码片段

前端:分片上传逻辑(WebUploader + IndexedDB)
// WebUploader初始化(兼容IE8)constuploader=WebUploader.create({server:'/api/upload_chunk.php',fileSizeLimit:10*1024*1024*1024,// 10GBchunkSize:5*1024*1024,// 5MB分片duplicate:true,disableGlobalDnd:true,// IE8必须prepareNextFile:true});// 断点信息存储(优先IndexedDB)functionsaveProgress(fileId,chunks){if('indexedDB'inwindow){constdbRequest=indexedDB.open('UploadDB',1);dbRequest.onsuccess=(e)=>{constdb=e.target.result;consttx=db.transaction('progress','readwrite');tx.objectStore('progress').put({fileId,chunks});};}else{localStorage.setItem(`upload_${fileId}`,JSON.stringify(chunks));}}
后端:PHP分片合并(OSS直传优化)
// upload_chunk.php$fileId=$_POST['fileId'];$chunkIndex=$_POST['chunkIndex'];$totalChunks=$_POST['totalChunks'];// 加密分片存储(AES-256-CBC)$encryptedChunk=openssl_encrypt(file_get_contents($_FILES['file']['tmp_name']),'aes-256-cbc','your_encryption_key',0,'initialization_vector');file_put_contents("/tmp/{$fileId}_{$chunkIndex}.part",$encryptedChunk);// 判断是否合并if($chunkIndex==$totalChunks-1){$ossClient=newOSS\OssClient(/* OSS配置 */);$finalPath="/user_uploads/{$fileId}.dat";// 合并所有分片for($i=0;$i<$totalChunks;$i++){$chunkData=file_get_contents("/tmp/{$fileId}_{$i}.part");file_put_contents("/tmp/{$fileId}_final",$chunkData,FILE_APPEND);}// 上传至OSS$ossClient->uploadFile('your-bucket',$finalPath,"/tmp/{$fileId}_final");echojson_encode(['status'=>'success']);}

今日踩坑记录

  1. IE8兼容性问题

    • WebUploader的Flash模式需要手动部署swf文件
    • 解决方案:在public目录放置webuploader.flash.swf并配置swf: '/static/webuploader.flash.swf'
  2. 文件夹结构递归

    • 使用webkitRelativePath属性获取相对路径(非IE浏览器)
    • IE8需通过``的替代方案(已放弃,改用Zip预处理)

明日计划

  1. 实现离线进度恢复的完整Demo
  2. 研究国产浏览器(龙芯/红莲花)的测试方案
  3. 联系校友群(已加QQ群374992201)询问工作内推

PS:有西安华为OD的学长联系我,要求提供毕业设计演示视频——得加快进度了!

(日记风格建议:技术细节+个人情绪+进度追踪,保持真实感)

如果需要更完整的代码库或架构设计图,可以进一步讨论!

安装环境

PHP:7.2.14

调整块大小

NOSQL

NOSQL不需要任何配置,可以直接访问测试

SQL

创建数据库

您可以直接复制脚本进行创建

配置数据库连接

安装依赖

访问页面进行测试

数据表中的数据

效果预览

文件上传

文件刷新续传

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

文件夹上传

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

免费下载示例

点击下载完整示例

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

高危安全污染!研究曝大语言模型训练集暗藏超1.2万个密钥与密码

训练集中发现有效认证信息 用于训练大语言模型&#xff08;LLMs&#xff09;的数据集中被发现包含近1.2万个有效的密钥信息&#xff0c;这些密钥可以成功进行身份验证。 这一发现再次凸显了硬编码凭证给用户和组织带来的严重安全风险&#xff0c;尤其是当大语言模型最终向用户…

作者头像 李华
网站建设 2026/5/6 18:20:55

全任务零样本学习-mT5中文增强版:批量文本处理实战案例分享

全任务零样本学习-mT5中文增强版&#xff1a;批量文本处理实战案例分享 这不是又一个“微调后能用”的模型&#xff0c;而是一个开箱即用、不依赖标注数据、专为中文场景打磨的文本增强引擎。 它基于mT5架构&#xff0c;但关键差异在于&#xff1a;不靠下游任务微调&#xff0…

作者头像 李华
网站建设 2026/5/7 7:49:41

智谱AI GLM-Image测评:轻松生成8K级精美图片

智谱AI GLM-Image测评&#xff1a;轻松生成8K级精美图片 你有没有试过这样的情景&#xff1a;刚想到一个绝妙的视觉创意&#xff0c;比如“赛博朋克风格的江南水乡&#xff0c;霓虹倒映在青石板路上&#xff0c;雨丝斜织&#xff0c;无人机视角俯拍”&#xff0c;却卡在了找图…

作者头像 李华
网站建设 2026/5/4 13:12:56

PyTorch2.2工业级落地全流程:AOTInductor编译+TensorRT优化实战

前言&#xff1a;作为深耕工业级深度学习落地的开发者&#xff0c;我踩过最坑的坑是——用PyTorch2.x训练的模型&#xff0c;实验室里推理速度勉强达标&#xff0c;放到工业生产环境直接“拉胯”&#xff1a;要么torch.compile加速效果打折扣&#xff0c;要么TensorRT优化后精度…

作者头像 李华