winforms 如何使用OneDrive SDK按文件哈希进行搜索

5tmbdcev  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(202)

我正在编写的一个程序的一部分需要连接到OneDrive并删除重复文件(有一个文件夹有很多文件,其中许多文件也可以在用户的OneDrive中的其他地方找到,可能在不同的文件名下)。
因此,给定一个特定的文件,我需要一种方法来搜索重复的文件(如果存在,我将删除第一个文件)。我只需要能够通过它来搜索找到复制品。
OneDrive Explorer C#示例(https://github.com/OneDrive/onedrive-explorer-win)显示了如何实现搜索,但搜索似乎只索引文件名、内容和标记--而不是哈希。
有没有办法通过哈希值进行搜索?否则我想我需要递归地遍历用户OneDrive中的每一个项目,并比较哈希值...

r1wp621o

r1wp621o1#

OneDrive不支持按哈希搜索。
如果您希望多次执行重复数据消除,我建议您使用view.changes api查看已更新得文件.
GET https://api.onedrive.com/v1.0/drive/root/view.changes?select=id,file
此查询已更改,因此它将仅返回驱动器中所有项的项ID和文件面
{ ... "value": [{ "id": "DA56136E!124" }, { "id": "DA56136E!178", "file": { "hashes": { "crc32Hash": "838920AE", "sha1Hash": "23DCC6D4B5BFE00357FD0248BB5955B8E36BB8F1" }, "mimeType": "image/gif" } }, ...
在@odata.nextLink之后,直到你枚举了整个文件集,你应该在驱动器中有所有的项目id沿着与这些文件匹配的sha1或crc 32。然后你可以执行清理过程来删除已经重复的文件。
如果保留@changes.标记,则以后进行调用时,您可以只看到自上次执行重复数据消除以来发生更改得文件,并确信驱动器处于干净状态.

相关问题