0

我的目标是将文件上传到“计划”文件夹的特定子文件夹中。我遇到的第一个问题是,当我使用 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 身份验证,我的范围也很好。

我的代码中有错误还是有其他方法?

4

0 回答 0