如何使用系统管理员令牌 (REST API) 将文件上传到用户的 'Files' 选项卡?

How to upload the file to the user`s 'Files' tab using system admin token (REST API)?

作为系统管理员,我想从我的组织中获取由不同用户上传的所有文件。 为了实现我的目标,我使用 GET /services/data/v48.0/query/?q=SELECT+Id+FROM+ContentDocument+USING+SCOPE+Everything 的请求。 但这里有以下问题:当用户删除他的文件时,我想使用系统管理员令牌将该文件上传回来,但有可能更改其所有者(返回到删除该文件的用户)。 谁能帮我解决这样的问题?

这有点违反直觉,但要上传文件,您需要上传 ContentVersion 记录。如果父查找 (ContentDocumentId) 字段为空 - 它会默默地为您创建父 ContentDocument

可在此处找到上传示例:https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_insert_update_blob.htm

(我已经为你回答了,不是吗?:))

所以唯一的区别是您要设置 OwnerId,也可能 CreatedById 作为该用户。只要所有者是活动用户,您就可以始终设置所有者。 "Created By"、"Last Modified By"为审计字段,一般不可编辑。如果所有者处于非活动状态或者您真的想设置 "Created By" - 您可以。但是你只有一次机会,审计字段只能在插入时设置。之后每次更新都由 SF 管理。如果您需要这方面的更多信息,请勾选 Help


现在...这并不总是需要的。好的,您将重新创建文件,但指向它的所有链接(来自其他记录、聊天帖子、图书馆)都将丢失。它在 ContentDOcumentLink 中,如果您删除文档 - 它们会级联删除。您可能没有信息或权限来重新创建所有链接。

您的第一道防线可能是检查文件是否可以从回收站中恢复。它不能在纯 REST API 中完成,但您可以使用 SF SOAP API 或编写一个 Apex 服务来尝试为您完成。有关提示,请参阅 https://salesforce.stackexchange.com/questions/117370/how-can-a-record-be-undeleted-using-the-rest-api