Ну, есть много способов загрузить контент из Alfresco. Если вы еще этого не сделали, я предлагаю посмотреть на http://api-explorer.alfresco.com, чтобы понять API REST.
Вы можете загрузить любой объект в 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 добавил новую конечную точку под названием downloads . С его помощью вы можете запросить загрузку, состоящую из произвольного числа ссылок на узлы. Итак, если у меня есть следующие файлы:
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
Как только ответ вернется в состояние ВЫПОЛНЕНО, вы можете загрузить подготовленный для вас 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 Химия .