Как загрузить файл на вкладку «Файлы» пользователя с помощью токена системного администратора (REST API)? - PullRequest
1 голос
/ 27 апреля 2020

Как системный администратор, я хочу получить все файлы из моей организации, загруженные разными пользователями. Для достижения своей цели я использую запрос на GET /services/data/v48.0/query/?q=SELECT+Id+FROM+ContentDocument+USING+SCOPE+Everything. Но здесь возникает следующая проблема: когда пользователь удаляет свой файл, я хочу загрузить этот файл обратно, используя токен системного администратора, но с возможностью сменить его владельца (обратно тому пользователю, который удаляет этот файл). Может кто-нибудь помочь мне решить такую ​​проблему?

1 Ответ

1 голос
/ 28 апреля 2020

Это немного нелогично, но для загрузки файла вам нужно загрузить ContentVersion запись. Если поле родительского поиска (ContentDocumentId) будет пустым - оно автоматически создаст для вас родительский ContentDocument.

Примеры загрузки можно найти здесь: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_insert_update_blob.htm

(я уже ответил, что для вас, не так ли? :))

Таким образом, единственное отличие будет в том, что вы хотите установить OwnerId, возможно, также CreatedById как этот пользователь. Вы можете установить владельца всегда, пока владелец является активным пользователем. «Создано», «Последнее изменение» - это поля аудита, обычно не редактируемые. Если владелец неактивен или вы действительно хотите установить «Создано» - вы можете. Но у вас есть только один выстрел, поля аудита могут быть установлены только при вставке. После этого каждое обновление управляется SF. Проверьте Справка , если вам нужна дополнительная информация по этому вопросу.


Теперь ... это не всегда необходимо. Хорошо, вы создадите файл заново, но все ссылки на него (из других записей, из постов болтовни, из библиотек) будут потеряны. Это в ContentDOcumentLink, и если вы удаляете документ - они каскадно удаляются. Возможно, у вас нет информации или разрешений для воссоздания всех ссылок.

Ваша первая линия защиты - проверка возможности восстановления файла из корзины. Это не может быть сделано в чистом REST API, но вы можете использовать SF SOAP API или написать сервис Apex, который попытается сделать это за вас. См. https://salesforce.stackexchange.com/questions/117370/how-can-a-record-be-undeleted-using-the-rest-api для подсказок.

...