如何通过api读写「附件」字段?

我在使用api对数据表进行get的时候,好像get不到「附件」对应的字段内容,并且也查不到如何通过post对附件进行更新

PS:我看了这份api文档:
https://docs.nocobase.com/handbook/file-manager/http-api
我新建了一个文件表,并且可以通过api进行操作,但是对于普通表的附件字段依然不知道如何操作(上传 / 删除附件等等)

附件字段的文件数据目前保存在一张 attachments 系统表之中,暂时未开放使用。如果需要通过 API 访问,可以使用这个表名,或使用包含附件字段的主表的 API,通过 appends 参数与其他数据一并加载。

非常感谢!通过appends参数获取到了!:heart:

目前通过https://docs.nocobase.com/handbook/file-manager/http-api 上传附件,最终会在attachments表创建一条记录,但是这条记录ID与某主记录的ID如何建立关联关系呢?我们如何通过api在这张中间表创建记录?

你在任何一个表格组件里面,查看网络,里面可以看到请求 rest 数据,里面的 url 可以看到。
这种方法可以用在任何地方,如果不了解,就尝试看 nocobase 本身是怎么做的。

默认还会生成一个数据表t_xxxx这种格式的,里面有两个类似f_xxx的字段,对应一个是主表id一个附件id

谢谢,这个思路很不错

没想到这个帖子这么久还有回复,我说一下我现在的方案:

  • 我是用了两个表,一个是数据表,假设叫:mail_list,一个是文件表,假设叫:mail_files。数据表中的附件是通过关系字段关联到文件表的,这样能得到的关于文件的信息要多一些,操作起来也更灵活一些(相对于默认的附件字段来说),不知道是为什么要这样设计🤔
  • 第1步,上传文件到文件表
curl -X 'POST' \
  '{nocobase的url}/api/mail_files:create' \
  -H 'Authorization: Bearer {你的token}' \
  -F "file=@{文件路径}"
  • 在返回的数据中,你会得到一个文件的id
  • 接下来,将附件和邮件列表中的某个条目相关联:
curl -X 'POST' \
  '{nocobase的url}/api/mail_list/{邮件条目的id}/{关系附件的字段}:set?filterByTk={刚刚得到的文件id}' \
  -H 'Authorization: Bearer {你的token}' 
  • 如果是一对多的关系,可以用逗号关联多条附件。
    这样就上传并关联附件了。

其实还有一个方法:

curl -X 'POST' \
  '{nocobase的url}/api/mail_list/{邮件条目的id}/{关系附件的字段}:create' \
  -H 'Authorization: Bearer {你的token}' \
  -F "file=@{文件路径}"

这个也可以上传附件,但是上传到uploads文件夹中的路径并不是设定的路径,而是默认路径,这可能是一个bug🤔