在我的file upload问题之后,我在文档中遇到了Step 5。我收到400错误,表明我发送的一些数据不正确,但我认为我已完全匹配代码。
def create_version_for_file(self, file_name, project_id, folder_id, object_id):
url = '{}data/v1/projects/{}/items'.format(self.DOMAIN, project_id)
logger.info('Starting version create at %s for file_name %s, folder %s, object %s',
url, file_name, folder_id, object_id)
data = {
"jsonapi": {"version": "1.0"},
"data": {
"type": "items",
"attributes": {
"displayName": file_name,
"extension": {
"type": "items:autodesk.core:File",
"version": "1.0"
}
},
"relationships": {
"tip": {
"data": {
"type": "versions",
"id": "1"
}
},
"parent": {
"data": {
"type": "folders",
"id": folder_id
}
}
}
},
"included": [
{
"type": "versions",
"id": "1",
"attributes": {
"name": file_name,
"extension": {
"type": "versions:autodesk.core:File",
"version": "1.0"
}
},
"relationships": {
"storage": {
"data": {
"type": "objects",
"id": object_id
}
}
}
}
]
}
response = self.session.post(url, json=data, headers={
'content-type': 'application/vnd.api+json',
'accept': 'application/vnd.api+json'
})
if response.status_code != status.HTTP_201_CREATED:
logger.warn('Version create for %s failed with status %s: %s', file_name, response.status_code,
response.content)
return None
return json.loads(response.content)
然而,请求总是如此失败:
Upload succeeded for README.md 2017-10-12 16:53:15,943
Starting version create at https://developer.api.autodesk.com/data/v1/projects/b.f19577f2-c4da-428f-9625-bb53bf434cca/items for file_name README.md, folder urn:adsk.wipprod:fs.folder:co.Hx1ePxPtS1e0P-Ib9qudyQ, object urn:adsk.objects:os.object:3a06e38e-4cac-4ffc-981f-0e5c4e4078aab.f19577f2-c4da-428f-9625-bb53bf434cca/d14c3591-d339-4e62-907c-6f0c8b58b743.md
Version create for README.md failed with status 400: {"jsonapi":{"version":"1.0"},"errors":[{"id":"bfbf0a93-c92a-47af-9ce7-a6af48594e44","status":"400","code":"BAD_INPUT","title":"One or more input values in the request were bad","detail":"Request input is invalid for this operation."}]}
上述日志中所有变量的样本值均在右侧。
答案 0 :(得分:1)
这可能设置正确,但您可能在不正确的文件夹中创建了存储位置。从我在论坛帖子中建议的教程中,您需要向下导航一级以避免在BIM 360 Docs的Root文件夹中创建存储位置。尝试返回您的步骤,并按照教程中的建议执行操作。专注于第4步
授权Web流程(这将返回我们需要的代码 获取我们的oauth令牌)
暂停调用Authentication API 获得一个3腿的令牌GET调用,以获取哪些集线器的详细信息 我们可以访问BIM 360 Docs(BIM所需的APP注册) 360 API访问)
GET调用以查找具有您资源的项目
GET调用以找到上传将要发生的文件夹(计划, 项目文件,图纸)。
4.1额外步骤可包括访问子文件夹。
POST调用以在之前创建存储位置 定义文件夹
PUT调用将文件上传到存储位置
POST调用以创建上传文件的第一个版本。
检查BIM 360文档以查看最近上传的文件。
希望它有所帮助。
答案 1 :(得分:0)
从此forum response开始,the tutorial已过时,您应使用autodesk.bim360:File
(但不是autodedsk.bim360:File
作为拼写错误建议)代替{{1} }}。有一个更新的example here.。
它仍无法正常工作,但至少我的错误转移到autodesk.core:File