是否可以获得 OneDrive 项目的完整路径?

Is it possible to get full path to a OneDrive item?

我在 C# 项目中使用 MS Graph SDK 在人们的 OneDrive 中搜索文件和文件夹中的特定术语。当我找到一个时,我没有找到一种方法来获取 DriveItem 的完整路径?

不是URL路径,而是拥有用户在本地存储文件的文件系统路径。

这可能吗?

当您请求驱动器项目的元数据时,例如:

{
    "@microsoft.graph.downloadUrl": "https://m365x214355-my.sharepoint.com/personal/meganb_m365x214355_onmicrosoft_com/_layouts/15/download.aspx?UniqueId=c8b43b37-bc76-4352-af27-5a8e9f1bbfeb&Translate=false&tempauth=eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvbTM2NXgyMTQzNTUtbXkuc2hhcmVwb2ludC5jb21AZGNkMjE5ZGQtYmM2OC00YjliLWJmMGItNGEzM2E3OTZiZTM1IiwiaXNzIjoiMDAwMDAwMDMtMDAwMC0wZmYxLWNlMDAtMDAwMDAwMDAwMDAwIiwibmJmIjoiMTUzMzg5NzE3MiIsImV4cCI6IjE1MzM5MDA3NzIiLCJlbmRwb2ludHVybCI6IitjMlZ4YU9UY2hCSEhmK3hyNlhrMExtd0pRMEhQR0hYMmlKaTBMRldhTHM9IiwiZW5kcG9pbnR1cmxMZW5ndGgiOiIxNjkiLCJpc2xvb3BiYWNrIjoiVHJ1ZSIsImNpZCI6Ik16VTVOVFkyWVRjdFlqazVOeTAwWlRsa0xUZ3hNV1V0TlRNMU5UZGhaRGc0WkdVeSIsInZlciI6Imhhc2hlZHByb29mdG9rZW4iLCJzaXRlaWQiOiJaRGd5TXpFeVpqa3RZakl6WWkwMFkySmpMVGsxWkRVdE0yVXdaRGswWlRZNFl6RmwiLCJhcHBfZGlzcGxheW5hbWUiOiJhcGlzYW5kYm94cHJveHkiLCJhcHBpZCI6IjAwOTFlNTllLTE3ZTgtNDdmMC1hNDUwLTQ0M2Q0ZGQzYTAwNiIsInRpZCI6ImRjZDIxOWRkLWJjNjgtNGI5Yi1iZjBiLTRhMzNhNzk2YmUzNSIsInVwbiI6Im1lZ2FuYkBtMzY1eDIxNDM1NS5vbm1pY3Jvc29mdC5jb20iLCJwdWlkIjoiMTAwM0JGRkRBMzgxMzFBRiIsInNjcCI6ImFsbHNpdGVzLnJlYWQgbXlmaWxlcy5yZWFkIGdyb3VwLnJlYWQgbXlmaWxlcy5yZWFkIGFsbHNpdGVzLnJlYWQgYWxsc2l0ZXMucmVhZCBteWZpbGVzLnJlYWQgYWxscHJvZmlsZXMucmVhZCBhbGxwcm9maWxlcy5yZWFkIiwidHQiOiIyIiwidXNlUGVyc2lzdGVudENvb2tpZSI6bnVsbH0.eWQzcTFxNmhBb0txNFNnZzQyNlIyU2gzaUQwSGJxbC9abWRlVVZ3OGUwMD0&ApiVersion=2.0",
    "createdDateTime": "2017-08-07T16:17:44Z",
    "eTag": "\"{C8B43B37-BC76-4352-AF27-5A8E9F1BBFEB},2\"",
    "id": "01BYE5RZZXHO2MQ5V4KJB26J22R2PRXP7L",
    "lastModifiedDateTime": "2017-08-07T16:17:44Z",
    "name": "Camera Customer Analysis.xlsx",
    "webUrl": "https://m365x214355-my.sharepoint.com/personal/meganb_m365x214355_onmicrosoft_com/_layouts/15/Doc.aspx?sourcedoc=%7BC8B43B37-BC76-4352-AF27-5A8E9F1BBFEB%7D&file=Camera%20Customer%20Analysis.xlsx&action=default&mobileredirect=true",
    "cTag": "\"c:{C8B43B37-BC76-4352-AF27-5A8E9F1BBFEB},1\"",
    "size": 2675045,
    "createdBy": {
        "user": {
            "email": "MeganB@M365x214355.onmicrosoft.com",
            "id": "48d31887-5fad-4d73-a9f5-3c356e68a038",
            "displayName": "Megan Bowen"
        }
    },
    "lastModifiedBy": {
        "user": {
            "email": "MeganB@M365x214355.onmicrosoft.com",
            "id": "48d31887-5fad-4d73-a9f5-3c356e68a038",
            "displayName": "Megan Bowen"
        }
    },
    "parentReference": {
        "driveId": "b!-RIj2DuyvEyV1T4NlOaMHk8XkS_I8MdFlUCq1BlcjgmhRfAj3-Z8RY2VpuvV_tpd",
        "driveType": "business",
        "id": "01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU",
        "path": "/drive/root:/CR-227 Project"
    },
    "file": {
        "mimeType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "hashes": {
            "quickXorHash": "qz9+NLaGwZCFBcd9gH+HCNUVcn8="
        }
    },
    "fileSystemInfo": {
        "createdDateTime": "2017-08-07T16:17:44Z",
        "lastModifiedDateTime": "2017-08-07T16:17:44Z"
    }
}

如您所见,它包含一个 parentReference,其中包含 path 要获得完整路径,请从第一个 : 开始对 path 进行子字符串化,然后附加 name。 在上面的示例中,它将给出:/CR-227 Project/Camera Customer Analysis.xlsx

Doc reference

但是,获取用户在本地存储文件的本地路径并不是微软存储的。但是你可以复制它,因为OneDrive文件结构将与本地文件结构相同。

根据我的测试,我们无法使用GraphAPI获取OneDrive本地文件系统的根目录。我们只能得到OneDrive项的相对路径。

我的测试配置:本地存储目录:C:/onedrive。该文件存储在“C:/onedrive/Test Floder/”中。我们只能得到“path /drive/root:Test”。 enter image description here

重现步骤: 我们可以先尝试下面的API获取用户OneDrive设置的相对路径: https://graph.microsoft.com/v1.0/me/drive/items/{item-id}/children . 然后,可以将用户设置的文件系统路径与从API.

获取的相对路径拼接起来

我们可以为OneDrive在本地系统设置不同的文件系统路径。可以参考本文设置OneDrive的本地存储位置。