【问题标题】:How to search by file hash using OneDrive SDK如何使用 OneDrive SDK 按文件哈希搜索
【发布时间】:2015-09-11 04:28:02
【问题描述】:

我正在编写的程序的一部分需要连接到 OneDrive 并删除重复文件(有一个包含大量文件的文件夹,其中许多文件也可以在用户 OneDrive 的其他地方找到,可能使用不同的文件名) .

所以给定一个特定的文件,我需要一种方法来搜索重复项(如果它们存在,我将删除第一个文件)。 OneDrive 提供文件哈希;我只需要能够通过它进行搜索即可找到受骗者。

OneDrive Explorer C# 示例 (https://github.com/OneDrive/onedrive-explorer-win) 展示了如何实现搜索,但搜索似乎只是索引文件名、内容和标签,而不是哈希。

有什么方法可以通过哈希搜索?否则我想我需要递归遍历用户 OneDrive 中的每个项目并比较哈希...

【问题讨论】:

    标签: c# winforms search hash onedrive


    【解决方案1】:

    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 或 crc32。然后您可以执行清理过程以删除已重复的文件。

    如果您保留了 @changes.token,那么您可以在以后进行调用,并且只查看自上次执行重复数据删除后发生更改的文件,并了解驱动器的干净状态。

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2016-06-27
      • 2017-02-15
      • 2014-04-07
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      相关资源
      最近更新 更多