我们计划将 Alfresco 内的大量文件夹(站点)放入本地磁盘。我经历了很多类似的问题和教程,但似乎无法理解如何使用 REST API 启动下载。这是我第一次使用这个,我可以逐步了解如何解决这个问题吗?
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 添加了一个名为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
一旦响应返回 DONE,您就可以下载为您准备的 ZIP Alfresco。还记得本文开头的节点端点吗?它也在这里工作。只需使用下载 ID 代替节点引用,例如:
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项目中获取您首选语言的客户端库。