作为国内专注于设计制造领域的软件厂商,近期我们正积极投身于大文件上传下载组件的调研工作。在当前业务场景下,我们有着明确且极具挑战性的需求:所选取的组件必须能够支持高达 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统一配置:点击查看教程
工程
NOSQL
NOSQL示例不需要任何配置,可以直接访问测试
创建数据表
选择对应的数据表脚本,这里以SQL为例
修改数据库连接信息
访问页面进行测试
文件存储路径
up6/upload/年/月/日/guid/filename
效果预览
文件上传
文件刷新续传
支持离线保存文件进度,在关闭浏览器,刷新浏览器后进行不丢失,仍然能够继续上传
文件夹上传
支持上传文件夹并保留层级结构,同样支持进度信息离线保存,刷新页面,关闭页面,重启系统不丢失上传进度。
批量下载
支持文件批量下载
下载续传
文件下载支持离线保存进度信息,刷新页面,关闭页面,重启系统均不会丢失进度信息。
文件夹下载
支持下载文件夹,并保留层级结构,不打包,不占用服务器资源。
下载示例
点击下载完整示例