Skip to content

Word 管理 ​

Word 管理包含上传、元数据、下载和可选预览。后台表格与上传接口不等于在线 Office 编辑器;格式转换或协同编辑需单独接入。

文档元数据 ​

以下 PostgreSQL 示例可同时管理 Word 和 PDF,由用户手动执行:

sql
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。

MIT Licensed