Sebuah pendekatan berbasis permintaan dapat dipertimbangkan dalam hal ini. Karena DriveItem.name
properti desain menurut unik dalam folder, kueri berikut ini menunjukkan cara memfilter driveItem
menurut nama untuk menentukan apakah item drive ada:
https://graph.microsoft.com/v1.0/me/drive/items/{parent-item-id}/children?$filter=name eq '{folder-name}'
yang dapat direpresentasikan dalam C # seperti ini:
var items = await graphClient
.Me
.Drive
.Items[parentFolderId]
.Children
.Request()
.Filter($"name eq '{folderName}'")
.GetAsync();
Mengingat titik akhir yang disediakan, aliran dapat terdiri dari langkah-langkah berikut:
- kirim permintaan untuk menentukan apakah folder dengan nama yang diberikan sudah ada
- kirimkan yang kedua jika folder tidak ditemukan (atau kembalikan folder yang ada)
Contoh
Ini adalah contoh yang diperbarui
//1.ensure drive item already exists (filtering by name)
var items = await graphClient
.Me
.Drive
.Items[parentFolderId]
.Children
.Request()
.Filter($"name eq '{folderName}'")
.GetAsync();
if (items.Count > 0) //found existing item (folder facet)
{
Console.WriteLine(items[0].Id); //<- gives an existing DriveItem Id (folder facet)
}
else
{
//2. create a folder facet
var driveItem = new DriveItem
{
Name = folderName,
Folder = new Folder
{
},
AdditionalData = new Dictionary<string, object>()
{
{"@microsoft.graph.conflictBehavior","rename"}
}
};
var newFolder = await graphClient
.Me
.Drive
.Items[parentFolderId]
.Children
.Request()
.AddAsync(driveItem);
}