Мы планируем разместить большое количество папок (сайтов) внутри Alfresco на локальном диске. Я проходил через множество похожих вопросов и руководств, но, похоже, не могу понять, как инициировать загрузку с помощью REST API. Я впервые использую это, могу ли я получить пошаговый подход к тому, как с этим справиться?
Массовый экспорт контента Alfresco
Ответы (1)
Что ж, есть много способов загрузить контент из Alfresco. Если вы еще этого не сделали, я предлагаю посмотреть на http://api-explorer.alfresco.com, чтобы понять REST API.
Вы можете загрузить любой объект в Alfresco, если знаете ссылку на его узел. Например, предположим, что у меня есть файл с именем test-0.txt и ссылка на его узел выглядит следующим образом:
workspace://SpacesStore/0e61aa25-d181-4465-bef4-783932582636
Я мог бы использовать REST API, чтобы загрузить его, например:
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/0e61aa25-d181-4465-bef4-783932582636/content
Итак, одна из стратегий - пройти по узлам, которые вы хотите экспортировать, а затем вызвать этот URL-адрес для их загрузки.
Начиная с Alfresco 5.2.1, Alfresco добавила новую конечную точку под названием загрузки < / а>. С его помощью вы можете запросить загрузку, состоящую из произвольного количества ссылок на узлы. Итак, если у меня есть следующие файлы:
test-0.txt: workspace://SpacesStore/0e61aa25-d181-4465-bef4-783932582636
test-1.txt: workspace://SpacesStore/6bdac77f-8499-4be3-9228-9aabf80ba3e3
test-2.txt: workspace://SpacesStore/a6861c8f-8444-4bce-87a2-191c56b6ec7c
test-3.txt: workspace://SpacesStore/118121e9-bd92-4dec-9de7-062e374e5fb5
Я мог бы попросить Alfresco создать объект загрузки (фактическое содержимое будет в формате ZIP), состоящий из всех четырех этих файлов, например:
curl --location --request POST 'http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic YWRtaW46YWRtaW4=' \
--data-raw '{
"nodeIds":
[
"0e61aa25-d181-4465-bef4-783932582636",
"6bdac77f-8499-4be3-9228-9aabf80ba3e3",
"a6861c8f-8444-4bce-87a2-191c56b6ec7c",
"118121e9-bd92-4dec-9de7-062e374e5fb5"
]
}'
Alfresco ответит примерно так:
{
"entry": {
"filesAdded": 0,
"bytesAdded": 0,
"totalBytes": 0,
"id": "91456d9a-ed9e-493a-9efa-a1e49fbb578b",
"totalFiles": 0,
"status": "PENDING"
}
}
Обратите внимание на статус PENDING. Он асинхронно создает запрашиваемый ZIP. Вы можете проверить это, выполнив GET для объекта загрузки, например:
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads/91456d9a-ed9e-493a-9efa-a1e49fbb578b
Как только ответ появится как DONE, вы можете загрузить подготовленный для вас ZIP Alfresco. Помните конечную точку узла из начала этого поста? Здесь тоже работает. Просто используйте идентификатор загрузки вместо ссылки на узел, например:
curl --location --request GET 'http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/91456d9a-ed9e-493a-9efa-a1e49fbb578b/content' --header 'Authorization: Basic YWRtaW46YWRtaW4='
Таким образом, вместо того, чтобы по отдельности загружать каждый объект, который вы пытаетесь экспортировать, вы можете объединить их в пакет и загрузить несколько объектов, сжатых в виде ZIP-архива.
Если вы не хотите делать это с помощью обычного REST, вы также можете рассмотреть возможность использования CMIS. Вы можете получить клиентскую библиотеку для предпочитаемого вами языка в проекте Apache Chemistry.