我们计划将Alfresco中的大量文件夹(站点)放入本地磁盘中。我已经经历了很多类似的问题和教程,但似乎不能理解如何使用REST API启动下载。这是我第一次使用它,我可以一步一步地了解如何解决这个问题吗?
发布于 2020-02-08 05:13:27
好的,有很多方法可以把内容从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。您可以通过对download对象执行GET来检查它,例如:
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads/91456d9a-ed9e-493a-9efa-a1e49fbb578b
响应完成后,您可以下载为您准备的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项目中获得您首选语言的客户端库。
https://stackoverflow.com/questions/60078058
复制相似问题