Как получить информацию о диске (ParentReference) для копирования файла на другой диск с помощью MS GRAPH SDK C# - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь скопировать файл с диска на другой с помощью MS GRAPH SDK в C#.

Я могу успешно сделать это с помощью hardReded parentReference (DriveId & Id), потому что я получил это получая parentReference из существующего файла на целевом диске.

"/ sites / SiteId / жесткие диски / DriveId / root / children"

        "parentReference": {
            "driveId": "b!07UG1YX6EEWI-xYElkDOj9a5a_hmu6RDt0mpVQfH3RFpCR1wxODCRpss4Xq4g75t",
            "driveType": "documentLibrary",
            "id": "01QVACJXF6Y2GOVW7725BZO354PWSELRRZ",
            "path": "/drives/b!07UG1YX6EEWI-xYElkDOj9a5a_hmu6RDt0mpVQfH3RFpCR1wxODCRpss4Xq4g75t/root:"
        },

Мой текущий code:

        var parentReference = new ItemReference
        {
            DriveId = destination.Id, //retrieved DriveId previously
            Id = "01QVACJXF6Y2GOVW7725BZO354PWSELRRZ"
        };

        var name = DocumentTitle + "."+ extensionTemplate;

        var result = await graphClient.Sites[IdGestDoc].Drives[templateDrive.Id].Items[template.DriveItem.Id]
            .Copy(name, parentReference)
            .Request()
            .PostAsync();

Но мой вопрос заключается в том, как получить эту информацию, когда в накопителе нет файлов?

Я могу получить DriveId, но не Id для parentReference.

Любая помощь будет оценена!

1 Ответ

1 голос
/ 20 января 2020

Фактически Copy a DriveItem конечная точка ожидает, что parentReference параметр будет:

Ссылка на родительский элемент , в котором будет создана копия.

означает, что для копирования файла на пустой диск необходимо указать идентификатор целевого диска и root папку этого диска , например, так: :

var parentReference = new ItemReference
{
     DriveId = "--target drive-id-goes-here--",
     Id = "--root folder-of-drive-goes-here--"
};


 var result = await graphClient.Sites[siteId].Drives[driveId].Items[itemId]
 .Copy(name, parentReference)
 .Request()
 .PostAsync();

, где идентификатор диска и его root идентификатор папки могут быть определены заранее следующим образом:

GET https://graph.microsoft.com/v1.0/sites/{site-id}/drives/{target-drive-id}/root?select=id,parentReference


{
    "id": "--root-folder-id-of-drive",
    "parentReference": {
        "driveId": "--drive-id--",
        "driveType": "documentLibrary"
    }
}
...