我正在尝试下载计划数据的 pdf 文件。我正在按照如何通过 bim360 api 或 sdk 下载计划 pdf 文件?. 它有效,但我遇到了一个问题。我有一个在 docs.b360.autodesk.com 上似乎可以正常工作的计划文件。但我无法为其获取存储关系。响应如下所示:jsonblob.com/5a604bf0-c969-11e9-9e84-7533c7e873da
1 回答
来自我们的工程师团队:
属性“<strong>storage”仅适用于源文件(种子文件)。客户用来获取“存储”的关系是“<strong>FileToDocument”关系,它从源文件映射到拆分页面,因此它们包括要下载的存储。
对于“copy”创建的文档,将创建新的“CopyDocument”关系,它将复制的源(拆分页面)映射到复制的文档,而不是“文件到文档”。
如果要下载拆分页面,API(称为导出)为: https ://forge.autodesk.com/en/docs/bim360/v1/reference/http/document-management-projects-project_id- versions-version_id-exports-POST/ 检查导出作业的状态,API 是: https ://forge.autodesk.com/en/docs/bim360/v1/reference/http/document-management-projects-project_id -versions-version_id-exports-export_id-GET/
如果要下载“复制”文档的源文件,则需要遍历关系找到源文件并获取存储。
例如,如果我们将文件“A”上传到 Plans,它被拆分为文档“B”和“C”,然后我们将“B”复制到另一个文件夹,新创建的文档为“D”。“D”的关系是:
[{
"fromId": "B",
"toId": "D",
"extension": {
"type": "derived:autodesk.bim360:CopyDocument"
}
}]
“B”的关系是:
[{
"fromId": "B",
"toId": "D",
"extension": {
"type": "derived:autodesk.bim360:CopyDocument"
}
},
{
"fromId": "A",
"toId": "B",
"extension": {
"type": "derived:autodesk.bim360:FileToDocument"
}
}]
所以,下载“D”源文件的步骤是:
- 得到“D”的关系。“D”的关系没有“FileToDocument”但有“CopyDocument”,我们需要使用“CopyDocument”的“fromId”-“B”-再次获取关系。
- 这次“B”的关系有“FileToDocument”,它的“fromId”是“A”,所以我们可以搜索返回的响应找到“A”的“relationships.storage.meta.link.href”并下载。
- 请注意,由于“B”和“D”在不同的文件夹中,有时用户只有“D”的访问权限,而不能访问“A”和“B”,这种情况下,步骤2会返回403错误,客户客户需要处理这种情况。