← [ BACK_TO_NOTES ]

完整性校验

大文件上传的完整性校验策略,包括 chunk 级和文件级哈希校验

#concept #evergreen #frontend #backend

[!info] related notes

完整性校验

一句话定义

完整性校验是在分块上传的每个环节(chunk 上传、chunk 合并后)通过哈希比对确保文件内容未损坏。

核心内容

校验层次

层次校验对象目的
chunk 级单个分块确保每个分块传输正确
文件级合并后完整文件确保合并结果与原始文件一致

chunk 级校验

前端上传每个 chunk 时可携带 chunkHash:

{
  "uploadId": "u_123",
  "chunkIndex": 5,
  "chunkHash": "abc123..."
}

后端收到后计算实际 hash 并比对,不一致则返回错误。

文件级校验

合并完成后,后端计算最终文件 hash:

  1. 前端初始化时传入 fileHash
  2. 后端合并所有 chunk
  3. 计算合并后文件的 hash
  4. 比对是否与 fileHash 一致
  5. 一致则标记任务完成,不一致则标记失败

常用哈希算法

  • MD5:速度快,但安全性较弱,适合内部校验
  • SHA-256:安全性强,适合生产环境
  • CRC32:速度极快,适合 chunk 级快速校验

校验失败处理

  • chunk 级失败:通知前端重传该 chunk
  • 文件级失败:保留状态以便排查,可重试合并或标记任务失败

边界与易混淆点

  • 不能只相信”所有 chunk 都上传完了”:必须做最终 hash 校验
  • 校验成本:大文件全量 hash 计算耗时,可考虑抽样校验或增量 hash
  • 网络传输校验 vs 存储校验:TCP 已有校验,但应用层校验仍是必要的(防止存储介质错误)
创建于 2026/3/28 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本