如何使用系统管理员令牌 (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
。
(我已经为你回答了,不是吗?:))
所以唯一的区别是您要设置 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。
作为系统管理员,我想从我的组织中获取由不同用户上传的所有文件。
为了实现我的目标,我使用 GET /services/data/v48.0/query/?q=SELECT+Id+FROM+ContentDocument+USING+SCOPE+Everything
的请求。
但这里有以下问题:当用户删除他的文件时,我想使用系统管理员令牌将该文件上传回来,但有可能更改其所有者(返回到删除该文件的用户)。
谁能帮我解决这样的问题?
这有点违反直觉,但要上传文件,您需要上传 ContentVersion
记录。如果父查找 (ContentDocumentId
) 字段为空 - 它会默默地为您创建父 ContentDocument
。
(我已经为你回答了,不是吗?:))
所以唯一的区别是您要设置 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。