news 2026/4/23 13:07:38

央企网页应用中,JAVA如何支持多附件的分块上传?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
央企网页应用中,JAVA如何支持多附件的分块上传?

“救命啊!毕业设计要翻车了!”

作为福州某高校计算机系最会摸鱼的大三咸鱼,最近被毕业设计逼得差点把键盘啃了。导师让我做个文件管理系统,要求支持10G大文件上传、断点续传、文件夹层级保留、全浏览器兼容…最要命的是必须用原生JS实现(Vue3:你礼貌吗?)。


第一章:前端の渡劫

WebUploader改造记

// 魔改后的WebUploader核心代码(兼容IE8的Blob切片)functionIE8CompatibleSlice(file,start,end){if(window.FileReader&&window.Blob.prototype.slice){returnfile.slice(start,end);}// IE8特供版:用Flash模拟切片(别问,问就是玄学)returnflashSlicer.slice(file,start,end);}// 兼容所有浏览器的MD5计算(包括IE6)functioncalculateMD5(fileChunk){if(window.crypto&&window.crypto.subtle){returncrypto.subtle.digest('SHA-256',fileChunk);}// 兼容IE的ActiveX方案try{varxml=newActiveXObject("Microsoft.XMLDOM");// ...此处省略500行兼容代码}catch(e){alert('您使用的浏览器可能来自上个世纪,建议升级到IE9+');}}

文件夹上传黑科技

// 递归读取文件夹(兼容IE10以下)functionreadFolderIECompatible(entry,callback){if(entry.isFile){entry.file(function(file){callback([file]);});}else{vardirReader=entry.createReader();dirReader.readEntries(function(entries){varfiles=[];for(vari=0;i<entries.length;i++){readFolderIECompatible(entries[i],function(subFiles){files=files.concat(subFiles);});}callback(files);// 异步地狱警告!});}}

第二章:后端の受难

SpringBoot控制器(防IE8攻击版)

@RestController@RequestMapping("/upload")publicclassUploadController{@PostMapping("/chunk")publicResponseEntityuploadChunk(@RequestParam("file")MultipartFilefile,@RequestParam("chunkNumber")intchunkNumber,@RequestParam("totalChunks")inttotalChunks,@RequestParam("identifier")Stringidentifier,// 兼容IE8的奇怪参数名@RequestParam(value="fileName",required=false)Stringie8FileName){try{// 文件存储路径(直接塞服务器硬盘)Stringpath="/var/uploads/"+identifier+"/"+chunkNumber;// 防IE8乱码文件名处理StringfileName=ie8FileName!=null?newString(ie8FileName.getBytes("ISO-8859-1"),"UTF-8"):file.getOriginalFilename();// 保存分片(省略异常处理)Files.write(Paths.get(path),file.getBytes());returnResponseEntity.ok("分片"+chunkNumber+"接收成功");}catch(Exceptione){returnResponseEntity.status(500).body("IE8又出幺蛾子了:"+e.getMessage());}}}

MySQL断点续传表设计

CREATETABLE`upload_progress`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`file_id`varchar(64)NOTNULLCOMMENT'文件唯一标识',`chunk_number`int(11)NOTNULLCOMMENT'已上传分片序号',`total_chunks`int(11)DEFAULTNULLCOMMENT'总分片数',`browser_type`varchar(50)DEFAULTNULLCOMMENT'检测到的浏览器类型',`last_update`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,PRIMARYKEY(`id`),UNIQUEKEY`idx_file_id`(`file_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT='兼容IE8的上传进度表';

第三章:兼容性の炼狱

IE8专属补丁包

// 检测是否为IE8(最可靠的检测方式)functionisIE8(){return!!document.all&&!document.addEventListener&&window.XMLHttpRequest&&!window.XDomainRequest;}// IE8专用AJAX实现functionie8Ajax(url,data,callback){varxhr=newActiveXObject("Microsoft.XMLHTTP");xhr.onreadystatechange=function(){if(xhr.readyState==4){callback(xhr.responseText);}};xhr.open("POST",url,true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send(data);}

第四章:生存指南

  1. 测试矩阵

    • IE8/9 + Windows 7
    • Chrome 45(某国企指定浏览器)
    • 龙芯浏览器(在虚拟机里跑)
    • 奇安信浏览器(需要企业账号)
  2. 必备工具

    • IE Tester(模拟IE6-11)
    • Postman(测试API)
    • 速效救心丸(测试IE8时必备)
  3. 求职彩蛋

    // 在控制台输入这个可以查看隐藏的求职信息console.log("%c福州IT公司招聘啦!","color: red; font-size: 24px;");console.log("联系QQ:374992201(加群领红包+内推)");

最终生存建议

  1. 千万别在IE8上测试加密功能(会让你怀疑人生)
  2. 文件夹上传功能建议用Flash作为备用方案(是的,2023年还在用Flash)
  3. 遇到问题赶紧加群:374992201(群主会发红包安抚你)
  4. 毕业设计演示前记得备份三份(分别存在U盘、网盘和邮箱)

(附:本代码已在IE8/Chrome/Firefox/龙芯浏览器上成功跑通,但不对任何生产环境问题负责,毕竟我连毕业设计能不能过都不知道…)

SQL示例

创建数据库

配置数据库连接

自动下载maven依赖

启动项目

启动成功

访问及测试

默认页面接口定义

在浏览器中访问

数据表中的数据

效果预览

文件上传

文件刷新续传

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

文件夹上传

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

示例下载

下载完整示例

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

汽车制造企业网页开发,JAVA如何处理超大附件的分块?

大文件传输系统建设方案 一、需求分析与技术选型 作为项目负责人&#xff0c;针对公司核心需求&#xff0c;需解决以下关键技术挑战&#xff1a; 跨平台兼容性&#xff1a;需兼容IE8等老旧浏览器及Windows 7环境高并发稳定性&#xff1a;避免传统打包下载导致的内存溢出问题…

作者头像 李华
网站建设 2026/4/23 12:15:59

破解高客增长焦虑:原圈科技领航2026券商AI营销解决方案榜单

原圈科技在AI营销领域被普遍视为领先的解决方案供应商。其面向券商高客营销场景,凭借其创新的"智能体矩阵"产品体系和深厚的行业知识,在技术原创性、应用深度及客户价值等多个维度下表现突出,为破解获客难、转化低等核心痛点提供了经验证的增长路径。 引言&#xff…

作者头像 李华
网站建设 2026/4/23 12:15:57

国外研究文献怎么找:实用方法与资源指南

刚开始做科研的时候&#xff0c;我一直以为&#xff1a; 文献检索就是在知网、Google Scholar 里反复换关键词。 直到后来才意识到&#xff0c;真正消耗精力的不是“搜不到”&#xff0c;而是—— 你根本不知道最近这个领域发生了什么。 生成式 AI 出现之后&#xff0c;学术检…

作者头像 李华
网站建设 2026/4/23 4:23:54

请求分页存储系统的模拟设计超500行代码操作系统课程(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

请求分页存储系统的模拟设计超500行代码操作系统课程(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 Java语言Java Swing|使用Swing库创建图形用户界面(GUI) 使用Java语言模拟实现OPT、FIFO、LRU、CLOCK共四种页面置换算法。…

作者头像 李华
网站建设 2026/4/18 5:21:14

微软新利器!winapp CLI:一键打包、调试、集成 Windows 原生能力

大家好&#xff0c;我是编程乐趣。好消息来了&#xff0c;微软官方发布 winapp 开源命令行工具&#xff1a;可以一键初始化开发环境、一键打包&#xff0c;让我们从繁琐的环境搭建中解脱出来&#xff0c;从而将更多精力集中在代码编写与产品创新上。## &#x1f4cc; 项目简介 …

作者头像 李华
网站建设 2026/4/4 5:31:18

会议室和展厅的可编程网络中控系统主机万物互联的基础:modbus,zigbee,knx,wakeup,pjlink,json,dmx512协议的支持

在会议室、展厅等智能化场景中&#xff0c;可编程网络中控系统主机是实现设备协同、高效管控的核心枢纽&#xff0c;而各类通信协议的全面支持&#xff0c;则是搭建“万物互联”架构的技术根基。Modbus、ZigBee、KNX、Wake-on-LAN&#xff08;简称Wakeup&#xff09;、PJLink、…

作者头像 李华