首页 > 解决方案 > 如何使用系统管理员令牌(REST API)将文件上传到用户的“文件”选项卡?

问题描述

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

标签: restapisalesforcesalesforce-lightning

解决方案


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

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

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

所以唯一的区别是你想设置OwnerId,可能也是CreatedById那个用户。只要所有者是活动用户,您就可以始终设置所有者。“创建者”、“上次修改者”是审核字段,通常不可编辑。如果所有者处于非活动状态或者您真的想设置“创建者” - 您可以。但是您只有 1 次机会,审核字段只能在插入时设置。之后,每次更新都由 SF 管理。如果您需要更多信息,请查看帮助。


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

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


推荐阅读