2

I am facing issue while uploading the files to BIM 360. was following https://forge.autodesk.com/en/docs/bim360/v1/tutorials/document-management/upload-document/ and was able to do till step 5. but while uploading, status was showing "Not found". please help me to understand if any issue with code

    public async void uploadfile(string projectUrl,string projectName)
    {
        string[] idParams = projectUrl.Split('/');
        string projectId = idParams[idParams.Length - 1];
        Credentials credentials = await Credentials.FromSessionAsync(base.Request.Cookies, Response.Cookies);
        ProjectsApi projectsApi = new ProjectsApi();
        projectsApi.Configuration.AccessToken = credentials.TokenInternal;
        var href = "";
        var folders = await projectsApi.GetProjectTopFoldersAsync(hubId, projectId);
        foreach (KeyValuePair<string, dynamic> folder in new DynamicDictionaryItems(folders.data))
        {
            if (folder.Value.attributes.displayName == "Project Files")
                href = folder.Value.links.self.href;
        }
        BaseAttributesExtensionObject baseAttributesExtensionObject = new BaseAttributesExtensionObject("folders", "1.0.0");
        CreateStorageDataAttributes createStorageDataAttributes = new CreateStorageDataAttributes("html-string.pdf", baseAttributesExtensionObject);
        StorageRelationshipsTargetData storageRelationshipsTargetData = new StorageRelationshipsTargetData(0, href.Split('/')[href.Split('/').Length - 1]);
        CreateStorageDataRelationshipsTarget createStorageDataRelationshipTarget = new CreateStorageDataRelationshipsTarget(storageRelationshipsTargetData);
        CreateStorageDataRelationships createStorageDataRelationships = new CreateStorageDataRelationships(createStorageDataRelationshipTarget);
        CreateStorageData stroragebodydata = new CreateStorageData(0, createStorageDataAttributes, createStorageDataRelationships);
        JsonApiVersionJsonapi jsonApiVersionJsonapi = new JsonApiVersionJsonapi(0);
        CreateStorage storagebody = new CreateStorage(jsonApiVersionJsonapi, stroragebodydata);
        var storageCreated = await projectsApi.PostStorageAsync(projectId, storagebody);
        string[] storageIdParams = ((string)storageCreated.data.id).Split('/');
        string[] bucketKeyParams = storageIdParams[storageIdParams.Length - 2].Split(':');
        string bucketKey = bucketKeyParams[bucketKeyParams.Length - 1];
        string objectName = storageIdParams[storageIdParams.Length - 1];
        string uploadUrl = string.Format("/oss/v2/buckets/{0}/objects/{1}", bucketKey, objectName);
        string s = Convert.ToString(2 * 1024 * 1024);
        RestClient client = new RestClient(BASE_URL);
        RestRequest request = new RestRequest(uploadUrl, RestSharp.Method.POST);
        request.AddHeader("Authorization", "Bearer " + credentials.TokenInternal);
        request.AddHeader("Content-Length", s);
        request.AddXmlBody(@"C:\Users\INRM01777\Desktop\Bim360ArchieveTool\Bim360ArchieveTool\html-string.pdf");
        return await client.ExecuteAsync(request);
    }

Kindly help

Rahul
  • 21
  • 1

1 Answers1

0

I see you're accessing the endpoints through RestSharp and C# SDK.
Please try the approach from the forge-viewhubs sample.

You can find there the pieces of code for dealing specifically with the storage and complete upload, considering also the upload in chunks for large files.

João Martins
  • 388
  • 3
  • 10