A OneDrive API használatával több mint 200 elemet sorolhat fel egy mappában
Működési környezet
- Visual Studio
-
- Visual Studio 2022
- .HÁLÓ
-
- .NET 8
- Microsoft hitelesítési API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.68.0
- A Microsoft-fiókok típusai
-
- Munkahelyi vagy iskolai fiók
Előfeltételek
- Visual Studio
-
- Az egyik verzió
- .HÁLÓ
-
- Az egyik verzió
- Microsoft hitelesítési API
-
- 2.0 OAuth 2
- Microsoft OneDrive API
-
- 1.0
- Microsoft.Graph
-
- 5.XX
- A Microsoft-fiókok típusai
-
- Munkahelyi vagy iskolai fiók
Az egyszerre lehívható elemek maximális száma
Amikor egy mappa tartalmát a OneDrive API-val kéri le, az egyszerre lekérhető maximális szám 200. Ez az ábra az alábbi hivatalos weboldalon is megtalálható.
Ez akkor is igaz, ha közvetlenül az URL-t találja meg, de Microsoft.Graph
akkor is, ha a könyvtárat használja.
Az előző tippekben említett következő kód csak legfeljebb 200 eredményt kér le.
Nem történik hiba, de ellenőrizheti,DriveItemCollectionResponse.OdataNextLink
hogy van-e több mint 201 elem, ha ellenőrzi, hogy a tulajdonság értéke be van-e állítva.
// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
Console.WriteLine("フォルダの一覧を取得できませんでした。");
return;
}
foreach (var item in folderChildren.Value)
{
Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
}
Ha HTTP-kéréssel szeretné megszerezni, egyenként @odata.nextLink
kell hozzáférnie az URL-hez, hogy megkapja.
Microsoft.Graph
Ha a könyvtárat használja, egyszerűbb módja van annak, hogy mind a 200 elemet lekérje.
PageIterator
Van egy osztály, így csak annyit kell tenned, hogy használod. Használja az alábbiak szerint:
// フォルダ内アイテム一覧取得
var folderChildren = await graphClient.Drives[drive.Id].Items[folderItem.Id].Children.GetAsync();
if (folderChildren == null || folderChildren.Value == null)
{
Console.WriteLine("フォルダの一覧を取得できませんでした。");
return;
}
var pageIterator = PageIterator<DriveItem, DriveItemCollectionResponse>.CreatePageIterator(
graphClient,
folderChildren,
(item) =>
{
Console.WriteLine($"Type={(item.File != null ? "File" : "Folder")}, Id={item.Id}, Name={item.Name}, Size={item.Size}");
return true; // false を返すまで次のアイテムを列挙します
});
await pageIterator.IterateAsync();
Miután megkapta a mappaelemek listájának válaszát ()DriveItemCollectionResponse
PageIterator.CreatePageIterator
Adja meg a metódus második argumentumaként.
A harmadik argumentum a visszahívás, amelyet tételenként hívnak meg, így ha listázza, akkor az összes elemet le kell tudnia kapni.
PageIterator.CreatePageIterator
Egyébként csak egy iterációt generál, ezért meg kell hívnunk a metódust a végén PageIterator.IterateAsync
.