如何使用 REST API 将文件和附件上传到 sobject 记录?

Posted

技术标签:

【中文标题】如何使用 REST API 将文件和附件上传到 sobject 记录?【英文标题】:How to upload files and attachments to the sobject record using REST API? 【发布时间】:2020-07-23 09:23:42 【问题描述】:

Salesforce 有两个不同的 UI,根据它,它有可能以不同的方式存储附件。 通过经典 UI 上传了两个文件,它们被标记为“附件”。其他文件是通过新 UI 上传的,它们被标记为“文件”。 我想使用 REST API 上传所有这些文件。我找不到合适的文档。有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

这不是 100% 正确的。在 SF Classic UI 中,您也可以上传文件。这“只是”了解表的正确 API 名称,您会在网上找到很多示例。

AttachmentDocument 对象具有完全相同的 API 名称,您可以在 SOAP API definition 或 REST API 资源管理器中查看它们的定义(您仍然可以在 here 的屏幕截图中看到某些内容,似乎是现在,也许他们正在将其移至文档中的另一个区域...)

文件(包括“Chatter 文件”)存储在ContentDocumentContentVersion 对象中。这个名字出乎意料,因为很久以前顺丰买了另一家公司的产品,叫“Salesforce Content”。一开始有点混乱,现在它更好地集成到整个平台中,但仍然有一些东西潜伏着,比如有时在文档中可以将文件夹称为库,但实际的 API 名称是ContentWorkspace。实体关系图有点帮助:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_erd_content.htm

ContentDocument 是 SF 中许多地方链接到的标头(想象文件仅在磁盘上浪费空间一次,但从多个记录交叉链接)。它至少可以有 1 个版本,如果您需要更新文档 - 您可以上传新版本,但 org 中的所有链接都不会改变,它们仍然会链接到标题。

那么,如何使用呢?

REST API 指南:https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_insert_update_blob.htm 或者可能是 Chatter API 指南(您已将其标记为 chatter,因此您可能已经在使用它):https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_files.htm 我在这里的一些答案可能会有所帮助(无耻的插头)。它们也是关于上传和读取数据的,一个甚至是关于数据加载器的……但是您可以先尝试导出文件,在加载之前熟悉结构? https://***.com/a/48668673/313628 https://***.com/a/56268939/313628 https://***.com/a/60284736/313628

【讨论】:

以上是关于如何使用 REST API 将文件和附件上传到 sobject 记录?的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Graph API - 如何将附件上传到列表项

如何从 Google Drive 上传和下载文件(使用 Rest Api v3)

如何在 C# 中正确使用 WCF REST API 上的 Stream 将文件(图像/视频/等)上传到服务器?

Gmail Api 可恢复上传 Rest(附件大于 5MB)

如何在 Android 中使用 REST API 将图像上传到 S3 存储桶,出现禁止错误:403

如何使用 HTTP 将多张图片上传到 Flutter 中的 Rest API?