You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Uppy Dashboard为整批上传添加全局自定义元数据?

可以通过Uppy Dashboard为整批上传添加自定义元数据

当然可以实现,不需要依赖独立的form插件,以下是两种常用的实现方式:

方法1:文件添加后批量设置元数据

监听Uppy的files-added事件,在用户选择文件后,通过自定义交互(比如弹出表单)收集批量元数据,再循环赋值给所有选中的文件:

const uppy = Uppy.Core()
  .use(Uppy.Dashboard({
    inline: true,
    target: '#uppy-container'
  }));

uppy.on('files-added', (files) => {
  // 这里可以替换为自定义表单弹窗,收集用户输入的批量元数据
  const batchMeta = {
    project: '电商项目V2',
    uploader: '张三'
  };

  // 为每个文件设置统一的元数据
  Object.keys(files).forEach(fileId => {
    uppy.setFileMeta(fileId, batchMeta);
  });
});

方法2:在Dashboard内置全局表单字段

利用Dashboard的metaFields配置项添加全局表单,然后在上传开始前,将这些全局字段的值同步到所有文件的元数据中:

const uppy = Uppy.Core()
  .use(Uppy.Dashboard({
    inline: true,
    target: '#uppy-container',
    // 添加全局元数据输入字段
    metaFields: [
      { id: 'projectId', name: '项目ID', placeholder: '请输入项目唯一ID' },
      { id: 'tag', name: '文件标签', placeholder: '用逗号分隔多个标签' }
    ]
  }));

// 上传开始前,将全局表单的元数据同步到所有文件
uppy.on('upload-start', () => {
  const globalMeta = uppy.getState().meta;
  const allFiles = uppy.getFiles();

  allFiles.forEach(file => {
    uppy.setFileMeta(file.id, {
      ...file.meta,
      ...globalMeta
    });
  });
});

这两种方式都能实现整批上传的自定义元数据添加,完全不需要依赖form插件,而且可以和Dashboard完美配合。

内容的提问来源于stack exchange,提问作者WhatTheWhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:52:38