📋 分享状态与生命周期管理

版本 v1.0 | 更新日期:2026年3月26日 | 智能文件管理系统

一、分享状态定义

活跃 (ACTIVE)

分享正常可用,用户可以访问、预览和下载文件。

  • ✅ 正常访问
  • ✅ 可下载文件
  • ✅ 统计浏览次数和下载次数
已过期 (EXPIRED)

分享已超过设定的有效期,自动失效。

  • ⚠️ 链接失效,无法访问
  • ⏰ 可通过"延长有效期"恢复
  • 📊 历史统计数据保留
已撤销 (REVOKED)

用户主动撤销分享,链接永久失效。

  • ❌ 链接永久失效
  • 🔒 不可恢复,需重新创建
  • 📊 历史统计数据保留
已归档 (ARCHIVED)

过期的旧分享自动归档,便于后续查阅。

  • 📦 不可访问
  • 🗂️ 仅用于历史记录查询
  • ⏱️ 定期自动清理

二、撤销 vs 过期 - 核心区别

对比项 撤销 (Revoke) 过期 (Expire)
触发方式👤 用户主动操作🤖 系统自动触发
触发时机点击"撤销分享"按钮expiresAt < 当前时间
原因用户不再想分享该文件到达设定的有效期
可逆性❌ 不可逆(需重新创建)✅ 可延长有效期恢复
HTTP状态码403 Forbidden410 Gone
用户提示"该分享已被撤销,无法访问""该分享已过期,无法访问"
示例场景分享链接泄露,立即撤销设置7天有效期,自动过期

三、状态流转图

创建
ACTIVE
活跃
ACTIVE
已过期
EXPIRED
重新激活
REACTIVATE
活跃
ACTIVE
已撤销
REVOKED
不可恢复
已过期
EXPIRED
已归档
ARCHIVED
定期清理

四、用户访问流程

1
访问链接
/s/:code
2
检查状态
active / expired / revoked
3
检查类型
公开 / 内部
4
验证密码/登录
输入提取码 / 登录
5
显示文件
文件列表 | 下载

五、数据库关键字段

字段名类型说明
statusenum状态:active, expired, revoked, archived, limited
expires_attimestamp过期时间(NULL表示永久有效)
revoked_attimestamp撤销时间(撤销时记录)
revoked_reasonstring撤销原因
view_countint浏览次数
download_countint下载次数
max_viewsint最大浏览次数限制
max_downloadsint最大下载次数限制
last_accessed_attimestamp最后访问时间

六、状态码与用户提示

状态状态码用户提示
active200 OK正常访问,显示文件内容
expired410 Gone"该分享已过期,请联系分享者延长有效期"
revoked403 Forbidden"该分享已被撤销,无法访问"
archived404 Not Found"该分享已归档,无法访问"

七、前端展示逻辑

我的分享页面
  • 活跃中:绿色标签,可操作撤销/延长/复制链接
  • 已过期:灰色标签,仅可延长有效期
  • 已撤销:红色标签,不可操作
公开分享广场
  • 未过期:正常显示,可点击访问
  • 已过期:灰色背景 + 删除线标题 + 过期横幅 + 红色边框

八、用户可执行操作

操作适用状态说明
📋 复制链接active, expired复制分享链接和提取码
⏰ 延长有效期active, expired延长7/30天,可恢复过期分享
🗑️ 撤销分享active永久撤销,不可恢复
📊 查看统计所有状态查看浏览次数、下载次数等

九、相关API接口

接口方法说明
/api/sharesPOST创建分享
/api/shares/:id/extendPOST延长有效期
/api/shares/:id/revokePOST撤销分享
/api/shares/:id/reactivatePOST重新激活已过期的分享
/s/:codeGET访问分享