我正在使用Microsoft Graph在OneDrive中操作文件。我需要在特定文件夹中搜索文件,如果该文件存在,请删除该文件。
我正在使用以下代码搜索文件,它给出了整个驱动器的搜索结果。
var checkIfExists = this.graphClient
.Me
.Drive
.Search(item["FileName"].ToString())
.Request()
.GetAsync()
.Result;
我只需要搜索特定文件夹中的文件,例如仅搜索重复文件夹中的文件。
答案 0 :(得分:0)
由于Drive是代表用户一个驱动器的顶级资源,因此它与称为DriveItems的其他项目有关系。驱动器项目可以是任何内容,文件,文件夹或驱动器中存储的任何其他项目。
因此,要在驱动器中搜索特定文件,您可以提出请求;
var driveItems = await graphClient.Me.Drive.Root
.Search(<'{search-query}'>)
.Request()
.GetAsync();
这应该可以帮助您根据搜索查询获取DriveItem,一旦检索到DriveItem,就可以根据商品ID提出删除请求的请求;
await graphClient.Me.Drive
.Items[<"{item-id}">]
.Request()
.DeleteAsync();
更新:
根据对查找文件和删除文件的代码的帮助请求,我在下面提供了该文件供您参考。
var files = await graphClient.Me.Drive.Root
.Search("abc.pdf")
.Request()
.GetAsync();
var duplicateFile = files
.Where(driveItem => driveItem.ParentReference.Name
.ToLower() == "duplicate")
.FirstOrDefault();
if(duplicateFile != null) {
await graphClient.Me.Drive
.Items[duplicateFile.Id]
.Request()
.DeleteAsync();
}
答案 1 :(得分:0)
您可以将搜索范围限定到您喜欢的任何路径。例如,使用默认的Graph Explorer数据集,我们可以使用以下查询在整个云端硬盘中搜索finance
:
https://graph.microsoft.com/v1.0/me/drive/root/search(q='finance')?select=name,id,webUrl
如果我们只想在单个子文件夹(例如/CR-227 Project/
)下搜索,则可以使用该Path作为起点:
https://graph.microsoft.com/v1.0/me/drive/root:/CR-227 Project:/search(q='finance')?select=name,id,webUrl
另外,如果我们知道DriveItem.Id
(/CR-227 Project/
)的01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU
,则可以使用该ID代替路径:
https://graph.microsoft.com/v1.0/me/drive/items/01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU/search(q='finance')?select=name,id,webUrl