rest - 如何使用系统管理员令牌(REST API)将文件上传到用户的“文件”选项卡?
问题描述
作为系统管理员,我想从我的组织中获取由不同用户上传的所有文件。为了实现我的目标,我使用请求来GET /services/data/v48.0/query/?q=SELECT+Id+FROM+ContentDocument+USING+SCOPE+Everything
. 但这里有以下问题:当用户删除他的文件时,我想使用系统管理员令牌将该文件上传回来,但可以更改其所有者(回到删除该文件的用户)。谁能帮我解决这样的问题?
解决方案
这有点违反直觉,但要上传文件,您需要上传ContentVersion
记录。如果父查找 ( ContentDocumentId
) 字段为空白 - 它会默默地ContentDocument
为您创建父。
(我已经为你回答了,不是吗?:))
所以唯一的区别是你想设置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。
推荐阅读
- javascript - 如何检测用户何时不再滚动以启动类的添加/删除
- java - 无法为 JSP 编译类:在 Eclipse 中
- c# - 是否可以在 uwp toast 通知中显示动画?
- .net - Azure 函数在大型 TIF 文件上调用 Image.FromStream 时抛出“参数无效”
- python - 在python中划分包含列表的字典
- python - 使用图像序列在 Keras 中实现 Seq2Seq
- verilog - Verilog中的多个开始结束语句
- c# - U-SQL 和/或 Azure Data Lake Store 中的 PGP 加密
- java - 一个对话框获取两个值并对其执行所有算术运算,然后在 JAVA 中显示它
- c# - C# 在多个类中使用变量