Skip to content

feat(addons): add upload transform provider hook#25

Open
Jiosanity wants to merge 1 commit into
lovedevpanda:mainfrom
Jiosanity:feat/addon-upload-transform
Open

feat(addons): add upload transform provider hook#25
Jiosanity wants to merge 1 commit into
lovedevpanda:mainfrom
Jiosanity:feat/addon-upload-transform

Conversation

@Jiosanity

Copy link
Copy Markdown

背景

现有 upload provider 的 uploadFile() 可以由插件完整接管文件存储,但插件无法在继续使用宿主内置 local / S3 存储的前提下,仅对上传图片进行压缩、缩放或格式转换。

这使图片处理类插件必须重复实现存储逻辑,也无法自然复用宿主现有的文件配额、内容去重和上传记录。

修改

  • 为 upload provider 增加可选的 transformFile() runtime hook
  • 按 provider 顺序串行执行图片转换
  • 转换发生在水印处理之后、哈希去重和最终存储之前
  • 每次转换后重新检测真实 MIME、文件大小和 SHA-256
  • 转换完成后继续使用现有的配额、去重及 local / S3 存储流程
  • 转换后的文件重新检查站点上传大小限制
  • 将转换阶段接入以下上传场景:
    • 正文及评论图片
    • 私信图片
    • 图片附件
    • 远程图片本地化
    • 站点图标
    • Markdown 表情
    • 水印 Logo
    • 插件主动保存的图片
  • 更新插件开发文档并增加 transformFile() 示例

兼容性

transformFile() 是可选钩子。

未实现该钩子的现有 upload provider 行为不变;provider 返回 nullundefined 时会跳过当前转换并继续原有流程。现有 uploadFile() 存储接管能力保持不变。

验证

  • Next.js 类型生成通过
  • TypeScript 类型检查通过
  • ESLint 检查通过
  • 测试通过:97 passed,0 failed
  • Next.js 生产构建成功
  • 已通过图片自动压缩插件验证转换、上传与后台配置流程

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant