← [ BACK_TO_NOTES ]

专题归档 · 2025 年 9 月(编辑分组,非实际写作日期)

实习联调:文件上传完成了,为什么资源还不能用?

课程附件上传、资源登记、预览与下载的分阶段数据契约。

上传成功只是其中一段

当时课堂资源上传需要完成多个动作:选择文件、分片上传、服务端合并文件、返回资源标识、将资源保存到业务系统,最后再把它关联到课程。

其中一个重要疑问是:上传合并已完成,是否还需要另一个 API 才能把资源真正纳入课程? 这种双阶段流程容易出现“文件存在但页面找不到附件”的状态。

预览与下载也不是一条路径

另一份短记录讨论 PDF、视频等不同文件类型的预览和下载,包含下载进度、Blob URL、直链回退的实现样本。它说明界面里的“能预览”和“已在后端建立业务关联”是两个不同的问题。

一次文件操作其实至少有三个不同状态

后来我把“资源可用”拆成三个问题:

  • 存储可用:文件分片已经合并、得到文件或对象标识;
  • 业务可用:课程或课堂详情接口包含可识别的附件关系;
  • 消费可用:用户当前登录状态具有查看/下载权限,预览组件也支持文件类型。

这解释了为什么一个页面能显示“上传成功”,但刷新课程后附件仍然消失;也解释了为什么下载地址能打开,不等于能在当前页面内直接预览 PDF 或视频。

对于预览,用户界面还要处理浏览器限制、对象 URL 的回收、网络失败,以及不能内嵌显示时退化为下载。具体做法取决于文件服务是否提供稳定的公开/授权 URL,不能机械地把“生成 Blob URL”当成所有情况的解决方案。

保留疑问,不复制真实数据

当时遇到的上传失败还需要沿文件合并、资源保存与课程关联逐步定位。比起盯着某个文件 URL,我更愿意检查整个操作链路在哪一步丢失了状态。

创建于 2025/9/23 更新于 2026/10/16
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
关闭浮层 / 取消命令;输入框内清空文本