作为国内专注于设计制造领域的软件厂商近期我们正积极投身于大文件上传下载组件的调研工作。在当前业务场景下我们有着明确且极具挑战性的需求所选取的组件必须能够支持高达 100G 文件以及文件夹的上传下载功能同时要全面适配信创国产化环境涵盖国产化软硬件、数据库以及操作系统等各个方面。在过往的业务合作中我们曾遇到类似需求的客户案例。比如汽车制造行业里的领军企业他们拥有成熟且强大的业务系统如同企业的得力臂膀高效处理着各类事务。然而随着行业竞争的日益激烈以及技术的飞速迭代他们迫切希望为业务系统增添新功能以此提升生产效率并优化管理流程。于是他们将目光投向了我们的产品期望能将其与自身业务系统深度融合。这一融合并非易事客户不仅要求产品本身具备卓越性能更希望获取完整的产品源代码。因为他们拥有一支实力强劲的产品研发团队这些专业高手能够对源代码进行定制化改造使其完美契合各种项目和产品线的需求。同时客户对自主可控极为重视在他们看来掌握系统自主权就如同紧握自家大门的钥匙只有这样才能确保系统全方位可控使用起来才安心。基于这样的客户经验我们深知此次大文件上传下载组件的调研与选择至关重要。我们期望找到的组件不仅能满足大容量文件传输需求还要具备完善的自主可控能力。就像我们为客户提供全方位服务一样从源代码交付到技术支持再到培训以及后续的定制开发都要一应俱全确保客户能够顺利完成系统集成实现自主可控目标。在调研过程中我们与众多技术爱好者进行了交流。今天早上就有一位网友添加我的微信想要了解相关技术和方案尽管我的微信此前已在网上公开但仍有不少论坛网友并不知晓。昨天晚上还有一位网友在论坛发私信向我探讨技术问题。他刚接触这一领域以往主要从事后端数据库操作工作最近接手的项目遇到了大文件上传下载难题向我询问是否有好用的组件要求简单易用即可。这位网友对很多基础知识都不了解比如文件分块、后端合并以及文件保存等。我花费了约半个小时为他讲解思路又花了一个小时帮他搭建开发和测试环境最后还编写测试程序助他跑通流程。虽然调试成功时时间已晚交流不够充分但今天本想继续探讨却发现他未在线所以先在此和大家分享一下思路。从设计思路和逻辑实现方面来看目前关键在于了解浏览器如 Chrome提供的 API 用法明确每个参数的功能这部分内容可通过百度搜索获取答案。找到答案后便要开始进行功能设计绘制详细的流程图。功能实现主要分为前端和后端两部分前端负责文件的分块上传逻辑后端则承担文件块数据的接收和保存工作。我们此次调研的大文件上传下载组件有着严格且全面的要求。在源代码方面必须完全开放涵盖前端、后端以及控件源代码且控件源代码要确保支持信创国产化环境满足企业 100%自主安全可控需求实现自主编译、发布、部署和开发。同时组件提供商必须提供业务逻辑定制开发服务当我们有新的功能需求时要能够免费提供定制开发支持。除了关注组件本身的技术特性我们还会不定期与大家分享商业信息例如成功案例和近期签约信息等以便大家更全面地评估产品信息为后续使用提供参考。在调研过程中我们也发现了一些问题。不少网友其中很多是大学生上线时间不固定向我们咨询的方案往往不尽如人意。网上搜索到的资料大多重复且很多内容缺乏实战测试要么只有前端没有后端要么只有后端没有前端代码质量参差不齐根本无法直接应用于项目。一些开源方案也存在问题主要缺乏维护难以满足我们的需求。我们致力于寻找的企业级文件传输解决方案应具备丰富的功能。它不仅要包含文件上传和下载功能还要支持文件夹上传和下载并且拥有出色的跨浏览器架构设计方便开发人员在不同浏览器中轻松使用。同时要满足企业跨浏览器、跨平台、信创国产化环境、内网、多项目、多产品使用需求实现自主可控、自主研发和自主授权。对于大型集团要支持批量使用对于央企要满足加密安全使用和自主可控需求。此外还要满足个人免费使用、开源项目使用、多项目使用、多产品使用需求以及外包团队多项目、多产品使用和快速开发需求同时兼顾个人学习、兴趣爱好、大学生毕业设计以及个人技术研究需求。从目前开源情况来看部分组件受到了广泛关注每天都有网友下载除国内一线互联网大厂外各领域头部企业如汽车制造行业的比亚迪、吉利芯片领域的欣奕华金融领域的中兴IT 领域的东软等也在使用。但我们需要的组件要具备更强大的功能例如支持文件夹包含 1W、10W、100W 个文件和复杂层级结构支持超大文件分片、分段、分块、分割上传下载以及断点续传支持文件夹上传和下载断点续传并能将文件夹层级结构信息保存到数据库下载时同样保留层级结构支持加密上传和下载采用端到端加密和国密 SM4 加密算法确保数据在传输过程中加密。在技术实现层面我们关注多种技术手段如 VUE 批量上传文件、HTTP 实现文件上传与下载、HTTP 上传协议之文件流实现以轻松支持大文件上传、NGINX 实现浏览器端大文件分块上传、HTML5 文件上传下载的实例代码、WEBUPLOADER 大文件分段上传和断点续传、HTML DOM INPUT FILE 大文件上传源代码、B/S 大附件上传支持断点续传、VUE 处理文件流实现上传下载以及 VUE 上传大型文件插件如 VUE 上传视频插件等。我们期望找到的理想大文件上传下载组件能够让用户将源代码集成到自己的产品中并分发给其他用户使用赋予用户 100%自主可控的权限同时支持将特定组件如 up6集成到产品中并无限分发给所有用户使用以满足我们在信创国产化环境下对 100G 文件和文件夹上传下载的严苛需求。导入项目导入到Eclipse点击查看教程导入到IDEA点击查看教程springboot统一配置点击查看教程工程NOSQLNOSQL示例不需要任何配置可以直接访问测试创建数据表选择对应的数据表脚本这里以SQL为例修改数据库连接信息访问页面进行测试文件存储路径up6/upload/年/月/日/guid/filename效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。批量下载支持文件批量下载下载续传文件下载支持离线保存进度信息刷新页面关闭页面重启系统均不会丢失进度信息。文件夹下载支持下载文件夹并保留层级结构不打包不占用服务器资源。下载示例点击下载完整示例