BIM360问题附件下载链接生成:文件夹类附件处理咨询
一、核心结论:Lineage URN 无法直接生成Signed URL
你遇到的 urn:adsk.wipemea:dm.lineage:MSBYTyDcQXq6LeIoY8HnHw 属于Lineage类型URN,这类标识指向的是BIM360中的文件派生链或文件夹容器,并非直接的云存储对象,因此不能直接生成对象存储级别的Signed URL。
二、下载文件夹内文件的具体流程
要获取这类文件夹下的文件下载链接,需通过BIM360 Data Management API分三步操作:
1. 通过Lineage URN获取文件夹Item ID
调用GET /data/v1/projects/{project_id}/items接口,以Lineage ID为过滤条件查询对应文件夹:
GET https://developer.api.autodesk.com/data/v1/projects/{project_id}/items?filter=lineageId%3D%22MSBYTyDcQXq6LeIoY8HnHw%22
从返回结果中提取文件夹对应的id字段(即文件夹的Item ID)。
2. 拉取文件夹内的子文件列表
调用GET /data/v1/projects/{project_id}/items/{folder_item_id}/children接口,传入上一步得到的文件夹Item ID:
GET https://developer.api.autodesk.com/data/v1/projects/{project_id}/items/{folder_item_id}/children
响应结果会列出文件夹下所有文件的Item信息,每个Item的storage字段中包含标准的对象存储URN(格式同你之前处理的PDF/图片URN:urn:adsk.objects:os.object:wip.dm.emea.2/xxx.docx)。
3. 为子文件生成Signed URL
拿到子文件的存储URN后,沿用你之前生成PDF/图片下载链接的流程:
解析URN得到bucket_key和object_name,调用POST /oss/v2/buckets/{bucket_key}/objects/{object_name}/signed接口生成临时下载链接。
三、关键注意事项
- 确保API权限包含
data:read和bucket:read,否则无法读取文件夹内容及生成Signed URL。 - 若Lineage对应文件派生链(如原生文件转换生成的格式),同样可通过上述接口找到源文件或派生文件的存储URN,再执行后续下载流程。
内容的提问来源于stack exchange,提问作者henrikljungberg5467

