如何使用 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 名称,您会在网上找到很多示例。
Attachment
和 Document
对象具有完全相同的 API 名称,您可以在 SOAP API definition 或 REST API 资源管理器中查看它们的定义(您仍然可以在 here 的屏幕截图中看到某些内容,似乎是现在,也许他们正在将其移至文档中的另一个区域...)
文件(包括“Chatter 文件”)存储在ContentDocument
和ContentVersion
对象中。这个名字出乎意料,因为很久以前顺丰买了另一家公司的产品,叫“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)