首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >批量导出Alfresco内容

批量导出Alfresco内容
EN

Stack Overflow用户
提问于 2020-02-05 22:30:44
回答 1查看 363关注 0票数 0

我们计划将Alfresco中的大量文件夹(站点)放入本地磁盘中。我已经经历了很多类似的问题和教程,但似乎不能理解如何使用REST API启动下载。这是我第一次使用它,我可以一步一步地了解如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-08 05:13:27

好的,有很多方法可以把内容从Alfresco下载出去。如果您还没有,我建议您查看http://api-explorer.alfresco.com以了解REST API。

如果您知道任何对象的节点引用,则可以在Alfresco中下载该对象。例如,假设我有一个名为test-0.txt的文件,其节点引用如下:

代码语言:javascript
运行
复制
workspace://SpacesStore/0e61aa25-d181-4465-bef4-783932582636

我可以使用REST API下载它,如下所示:

代码语言:javascript
运行
复制
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/0e61aa25-d181-4465-bef4-783932582636/content

因此,一种策略是遍历要导出的节点,然后调用该URL来下载它们。

从Alfresco 5.2.1开始,Alfresco添加了一个名为downloads的新端点。使用它,您可以请求包含任意数量的节点引用的下载。因此,如果我有以下文件:

代码语言:javascript
运行
复制
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格式),如下所示:

代码语言:javascript
运行
复制
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将以如下方式回应:

代码语言:javascript
运行
复制
{
    "entry": {
        "filesAdded": 0,
        "bytesAdded": 0,
        "totalBytes": 0,
        "id": "91456d9a-ed9e-493a-9efa-a1e49fbb578b",
        "totalFiles": 0,
        "status": "PENDING"
    }
}

请注意,状态为PENDING。它正在异步构建我们要求的ZIP。您可以通过对download对象执行GET来检查它,例如:

代码语言:javascript
运行
复制
http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/downloads/91456d9a-ed9e-493a-9efa-a1e49fbb578b

响应完成后,您可以下载为您准备的ZIP Alfresco。还记得这篇文章开头的节点端点吗?它在这里也适用。只需使用下载ID代替节点引用,如下所示:

代码语言:javascript
运行
复制
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项目中获得您首选语言的客户端库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60078058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档