Word 管理
Word 管理包含上传、元数据、下载和可选预览。后台表格与上传接口不等于在线 Office 编辑器;格式转换或协同编辑需单独接入。
文档元数据
以下 PostgreSQL 示例可同时管理 Word 和 PDF,由用户手动执行:
CREATE TABLE IF NOT EXISTS app_document (
id BIGINT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
file_id BIGINT NOT NULL,
format VARCHAR(12) NOT NULL CHECK (format IN ('doc', 'docx', 'pdf')),
size_bytes BIGINT NOT NULL CHECK (size_bytes >= 0),
preview_file_id BIGINT,
preview_status VARCHAR(16) NOT NULL DEFAULT 'none'
CHECK (preview_status IN ('none', 'pending', 'ready', 'failed')),
creator VARCHAR(64) NOT NULL DEFAULT '',
create_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(64) NOT NULL DEFAULT '',
update_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted SMALLINT NOT NULL DEFAULT 0,
tenant_id BIGINT NOT NULL DEFAULT 0
);
file_id 与 preview_file_id 是文件服务的逻辑关联,没有声明外键或绑定固定文件表。保存时检查文件归属与可用性,BIGINT ID 按字符串传输。表前缀由项目替换。
上传与替换
先按 文件上传 配置存储和路由,上传成功后由业务接口验证文件类型、大小和归属,再保存元数据。不能只信任客户端的扩展名、MIME 或大小。
列表展示标题、格式、大小与预览状态。修改标题无需重新上传,替换文件时先验证新文件再更新关联,失败时保留原文件。
下载与预览
下载前检查权限,再返回短期签名链接或输出文件。私有文档不要保存永久公开链接。
浏览器不能统一原生预览所有 Word 格式,可提供原文件下载,或独立接入转换服务生成 PDF:pending → ready/failed。任务应绑定文档版本,防止旧文件转换结果覆盖新文件预览。未接入时明确显示“预览未开通”,不生成伪造链接。
验证上传失败不创建文档、跨用户文件 ID 被拒绝、替换失败保留原关联、旧任务不覆盖新版本。逻辑删除与物理文件清理分别定义,避免删除其他记录仍引用的文件。PDF 展示见 13.md。
