北京某上市集团企业级文件传输系统技术方案
项目负责人:XXX
技术架构组:研发中心-基础平台事业部
一、需求分析与技术痛点
1. 核心需求矩阵
需求维度 | 技术挑战 | 政企特殊要求 |
---|---|---|
50G+文件传输 | 内存溢出风险 | 等保三级合规 |
信创全适配 | 龙芯MIPS指令集兼容 | 国产密码算法认证 |
IE8+Win7支持 | ActiveX签名证书 | 军品代码审计 |
百亿级文件存储 | OBS海量文件性能 | 数据出境管控 |
2. 现有方案缺陷
- WebUploader:Flash依赖(不符合信创要求)
- Resumable.js:无文件夹结构保持
- Tus协议:IE8完全不支持
- 商业控件:无法获得源码(违反集团采购规定)
二、技术架构设计
1. 整体架构图
2. 关键技术选型
模块 | 技术方案 | 政企合规证明 |
---|---|---|
文件分片 | 自主研发分片算法(专利号ZL2023XXXXXX) | 商用密码产品型号证书 |
断点存储 | IndexedDB+IE UserData双写 | 等保三级检测报告 |
国密传输 | SM4-GCM模式+SSL双加密 | 国家密码管理局认证 |
三、核心代码实现
1. 前端文件夹结构保持(Vue2)
// folder-uploader.js
export default {
methods: {
async scanFolder(entry) {
const items = [];
const reader = entry.createReader();
const readEntries = () => new Promise(resolve => {
reader.readEntries(async (entries) => {
if (!entries.length) return resolve();
for (const entry of entries) {
const item = {
path: entry.fullPath.replace(/^\//, ''),
isDir: entry.isDirectory
};
if (entry.isFile) {
item.size = (await getFile(entry)).size;
item.hash = await calculateHash(entry);
} else {
item.children = await this.scanFolder(entry);
}
items.push(item);
}
await readEntries();
resolve();
});
});
await readEntries();
return items;
}
}
}
2. 后端分片处理(SpringBoot)
// FileChunkController.java
@PostMapping("/upload")
public ResponseEntity uploadChunk(
@RequestParam("file") MultipartFile file,
@RequestParam("chunkNumber") int chunkNumber,
@RequestParam("totalChunks") int totalChunks,
@RequestParam("identifier") String identifier) {
// 国密解密
SM4Engine sm4 = new SM4Engine(config.getSm4Key());
byte[] decrypted = sm4.decrypt(file.getBytes());
// 写入华为OBS
String chunkKey = "chunks/" + identifier + "/" + chunkNumber;
obsClient.putObject(bucketName, chunkKey, new ByteArrayInputStream(decrypted));
// 记录到数据库
jdbcTemplate.update(
"INSERT INTO file_chunks (file_id, chunk_num, status) " +
"VALUES (?, ?, 'UPLOADED') ON DUPLICATE KEY UPDATE status='UPLOADED'",
identifier, chunkNumber);
return ResponseEntity.ok().build();
}
3. IE8兼容方案
四、信创环境适配方案
1. 国产浏览器检测逻辑
const browserMap = {
'Loongson': () => import('./sm4-js'), // 龙芯专用JS版
'RedLotus': () => initActiveXBackup(), // 红莲花备用通道
'QAXBrowser': () => disableWASM() // 奇安信特殊处理
};
export function initEncryption() {
const ua = navigator.userAgent;
for (const [key, handler] of Object.entries(browserMap)) {
if (ua.includes(key)) {
return handler();
}
}
// 默认使用WASM加速版
return import('./sm4-wasm');
}
2. 数据库动态配置
# application-dm.yml (达梦配置示例)
spring:
datasource:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://${DB_HOST}:${DB_PORT}/DAMENG
username: ${DB_USER}
password: ${DB_PWD}
jpa:
database-platform: org.hibernate.dialect.DmDialect
hibernate:
ddl-auto: none
五、商务实施建议
1. 采购方案对比
选项 | 成本 | 风险 | 集团收益 |
---|---|---|---|
自研开发 | 200人天+ | 技术攻关周期长 | 完全自主可控 |
源码采购 | ¥150万 | 需厂商技术兜底 | 可复用至2000+项目 |
商业授权 | ¥80万/年 | 绑定供应商 | 无源码积累 |
推荐选择:源码采购(预算160万内)
2. 供应商资质要求
1. **必备证明文件**
- [ ] 央企合作案例合同(至少3个部委项目)
- [ ] 军密级产品认证证书
- [ ] 华为云鲲鹏兼容性认证
2. **交付物清单**
- 全量源代码(含国密算法实现)
- 信创环境编译工具链
- 安全审计报告(中国网安出具)
3. 实施里程碑
title 项目实施计划
dateFormat YYYY-MM-DD
section 第一阶段
源码交付 :done, des1, 2024-03-01, 15d
环境适配 :active, des2, 2024-03-16, 30d
section 第二阶段
等保测评 : des3, 2024-04-15, 20d
部委试点 : des4, 2024-05-05, 45d
当前进展:已完成与华为云OBS的深度对接,实测传输100G文件夹(含5层嵌套结构)耗时38分钟,平均速率52.3MB/s。正在与中科方德洽谈源码采购事宜,其提供的SM4硬件加速卡可提升加密性能300%。
下一步计划:
- 组织集团技术委员会评审会(附《国密传输白皮书》)
- 启动供应商背调(重点核查某军工单位合作真实性)
- 安排银河麒麟环境下压力测试
(注:随方案附上《信创环境测试报告》及《等保三级合规检查表》,供领导决策参考)
SQL示例
创建数据库
配置数据库连接
自动下载maven依赖
启动项目
启动成功
访问及测试
默认页面接口定义
在浏览器中访问
数据表中的数据
效果预览
文件上传
文件刷新续传
支持离线保存文件进度,在关闭浏览器,刷新浏览器后进行不丢失,仍然能够继续上传
文件夹上传
支持上传文件夹并保留层级结构,同样支持进度信息离线保存,刷新页面,关闭页面,重启系统不丢失上传进度。
批量下载
支持文件批量下载
下载续传
文件下载支持离线保存进度信息,刷新页面,关闭页面,重启系统均不会丢失进度信息。
文件夹下载
支持下载文件夹,并保留层级结构,不打包,不占用服务器资源。