2017-02-10 3 views
0

Я пытаюсь загрузить файл с A360 с помощью API управления Autodesk Forge Data Management. В documentation указано, что JSON, возвращаемый для «Items» или «Versions», должен иметь раздел «included.relationships.storage.meta.link.href».Autodesk Forge Data Management API Загрузить элемент

Шаг 5: Найдите версии элемента

Если вы только хотите последнюю версию, вы можете просто получить ссылку от тело ответа на предыдущей стадии. В приведенном выше примере, мы можем видеть место хранения Дом Design.rvt в атрибуте included.relationships.storage.meta.link.href (https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/977d69b1-43e7-40fa-8ece-6ec4602892f3.rvt) , который может быть использован для загрузки объекта.

Однако возвращенный JSON кажется, что этот раздел отсутствует.

т.е. GET проекты /: PROJECT_ID/предметы /: item_id

Использование Почтальон

https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw

Возвращает

{   "jsonapi":{  
     "version":"1.0" }, "links":{  
     "self":{  
     "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw" 
     } }, "data":{  
     "type":"items", 
     "id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw", 
     "attributes":{  
     "displayName":"Test.dwg", 
     "createTime":"2015-01-07T12:54:52.0000000Z", 
     "createUserId":"201007051504283", 
     "lastModifiedTime":"2015-01-07T12:54:52.0000000Z", 
     "lastModifiedUserId":"201007051504283", 
     "extension":{  
      "type":"items:autodesk.core:File", 
      "version":"1.0", 
      "schema":{  
       "href":"https://developer.api.autodesk.com/schema/v1/versions/items:autodesk.core:File-1.0" 
      }, 
      "data":{  

      } 
     } 
     }, 
     "links":{  
     "self":{  
      "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw" 
     } 
     }, 
     "relationships":{  
     "tip":{  
      "data":{  
       "type":"versions", 
       "id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1" 
      }, 
      "links":{  
       "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/tip" 
       } 
      } 
     }, 
     "versions":{  
      "links":{  
       "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/versions" 
       } 
      } 
     }, 
     "parent":{  
      "data":{  
       "type":"folders", 
       "id":"urn:adsk.wipprod:fs.folder:co.UDepmIWYTSSfbYGIUhngIA" 
      }, 
      "links":{  
       "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/parent" 
       } 
      } 
     }, 
     "refs":{  
      "links":{  
       "self":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/refs" 
       }, 
       "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/refs" 
       } 
      } 
     }, 
     "links":{  
      "links":{  
       "self":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/links" 
       } 
      } 
     } 
     } }, "included":[  
     {  
     "type":"versions", 
     "id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1", 
     "attributes":{  
      "name":"Test.dwg", 
      "displayName":"Test.dwg", 
      "createTime":"2015-01-07T12:54:52.0000000Z", 
      "createUserId":"201007051504283", 
      "lastModifiedTime":"2015-01-07T12:54:52.0000000Z", 
      "lastModifiedUserId":"201007051504283", 
      "versionNumber":1, 
      "mimeType":"application/vnd.autodesk.autocad.dwg", 
      "storageSize":438112, 
      "fileType":"dwg", 
      "extension":{  
       "type":"versions:autodesk.core:File", 
       "version":"1.0", 
       "schema":{  
        "href":"https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.core:File-1.0" 
       }, 
       "data":{  

       } 
      } 
     }, 
     "links":{  
      "self":{  
       "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1" 
      } 
     }, 
     "relationships":{  
      "item":{  
       "data":{  
        "type":"items", 
        "id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw" 
       }, 
       "links":{  
        "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/item" 
        } 
       } 
      }, 
      "links":{  
       "links":{  
        "self":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/links" 
        } 
       } 
      }, 
      "refs":{  
       "links":{  
        "self":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/refs" 
        }, 
        "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/refs" 
        } 
       } 
      }, 
      "downloadFormats":{  
       "links":{  
        "related":{  
        "href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/downloadFormats" 
        } 
       } 
      }, 
      "derivatives":{  
       "data":{  
        "type":"derivatives", 
        "id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x" 
       }, 
       "meta":{  
        "link":{  
        "href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/manifest" 
        } 
       } 
      }, 
      "thumbnails":{  
       "data":{  
        "type":"thumbnails", 
        "id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x" 
       }, 
       "meta":{  
        "link":{  
        "href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/thumbnail" 
        } 
       } 
      } 
     } 
     } ] } 
+0

Загрузив новый файл, у него есть данные о хранении. Все существующие файлы, которые не обновлялись в течение многих месяцев, не имеют данных о хранении. Может ли это быть проблемой с устаревшими данными? – BassetMan

+0

Это была унаследованная миграция, я дважды проверю дату для вас. –

ответ

0

Да, вы правы, к сожалению, старые файлы, загруженные в A360, не выставляют поле «данные» через API. Команда разработчиков работает над добавлением этой функции в будущем, но я не могу сказать вам, когда это будет доступно, извините за плохие новости.

Что вам нужно для того, чтобы загрузить элемент является первым, чтобы узнать, какую версию вы хотите, то получите objectKey и bucketKey от

version.relationships.storage.data.id 

Вот мой код клиента сторона:

///////////////////////////////////////////////////////////////// 
// Download object from version 
// 
///////////////////////////////////////////////////////////////// 
download (version) { 

    // retrieves bucketKey/objectKey from storage Id 

    var objectId = this.parseObjectId(
    version.relationships.storage.data.id) 

    var uri = `${this.apiUrl}/buckets/` + 
    `${objectId.bucketKey}/objects/${objectId.objectKey}` 

    var link = document.createElement('a') 

    link.download = version.attributes.displayName 
    link.href = uri 
    link.click() 
} 

И серверная сторона (node.js)

////////////////////////////////////////////////////////////////////// 
// GET /buckets/:bucketKey/objects/:objectKey 
// Download an item version based on { bucketKey, objectKey } 
// 
///////////////////////////////////////////////////////////////////// 
router.get('/buckets/:bucketKey/objects/:objectKey', async (req, res) => { 

    try { 

    var bucketKey = req.params.bucketKey 

    var objectKey = req.params.objectKey 

    var forgeSvc = ServiceManager.getService(
     'ForgeSvc') 

    var ossSvc = ServiceManager.getService(
     'OssSvc') 

    var token = await forgeSvc.get3LeggedTokenMaster(
     req.session) 

    var object = await ossSvc.getObject(
     token.access_token, 
     bucketKey, objectKey) 

    res.end(object) 

    } catch(ex) { 

    res.status(ex.status || 500) 
    res.json(ex) 
    } 
}) 

Вы можете проверить полный исходный код p roject there.

Надеюсь, что это поможет

+0

Спасибо, Филипп, мне удалось скачать новый загруженный файл без проблем. Но изначально просто пытался загрузить существующий контент без радости. – BassetMan

+0

Да, к сожалению, я не могу сказать вам, когда это будет возможно ... Вы можете оставаться в курсе последних обновлений Forge в нашем новом блоге: https://forge.autodesk.com/blog –