我的目标是将文件上传到“计划”文件夹的特定子文件夹中。我遇到的第一个问题是,当我使用 API 时,我只能上传版本 1 的文件。所以我决定将所有文件从特定文件夹复制到存档文件夹中。现在我可以删除特定文件夹中的所有文件,我可以将新文件上传到特定文件夹。我正在使用 forge-api-dotnet-client。
我知道有两种不同的删除文件的方法。(https://forge.autodesk.com/blog/way-delete-file-version-through-forge-dm-api)
我尝试了他们两个,但他们没有工作。
let project =
{ Id = "projectId"
ProjectFilesFolder = "specificFolderId"
UploadFolder = "destinationFolderId" }
let itemName = "itemName"
let itemId = "urn:adsk.wipprod:dm.lineage:QCtjhnZ5TWWCASh-mQ5nmA"
let createVersionBody fileName itemId =
sprintf """{
"jsonapi":{
"version":"1.0"
},
"data":{
"type":"versions",
"attributes":{
"name":"%s",
"extension":{
"type":"versions:autodesk.bim360:Deleted",
"version":"1.0"
}
},
"relationships":{
"item":{
"data":{
"type":"items",
"id":"%s"
}
}
}
}
}""" fileName itemId
|> JsonConvert.DeserializeObject<CreateVersion>
let versionApi = VersionsApi()
let result = versionApi.PostVersion(project.Id, (createVersionBody itemName itemId))
result |> ignore
它给了我这个BAD_INPUT 异常,我发现我从 api 获得的 id 与从网页获得的 id 不同。
来自 Api 的 ItemId:“urn:adsk.wipprod:dm.lineage:QCtjhnZ5TWWCASh-mQ5nMA”
来自网页的 ItemId:“urn:adsk.wipprod:dm.lineage:EdJjPVzFQR6tlbUJ5WK-zg”
我发现的第二种方法是使用“DeleteObject”来完成。
let project =
{ Id = "projectId"
ProjectFilesFolder = "specificFolderId"
UploadFolder = "destinationFolderId" }
let getStorage = ifcs project
ObjectsApi().DeleteObject(getStorage.BucketKey, getStorage.ObjectName)
我得到了这个例外。
我正在使用 TwoLegged 身份验证,我的范围也很好。
我的代码中有错误还是有其他方法?