首页 > 解决方案 > Microsoft Graph Api 将文件上传到 SharePoint

问题描述

我正在使用 microsoft graph api 采访 sharepoint。

  1. 将文件上传到共享点。

    https://graph.microsoft.com/v1.0/sites/abc78c05-a77b-45bf-a1a1-51f09548b497/drive/root:/test1212123.txt:/content

  2. 然后我们可以得到响应。

     {
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('abc78c05-a77b-45bf-a1a1-51f09548b497')/drive/root/$entity",
    "@microsoft.graph.downloadUrl": "https://yeeofficesg.sharepoint.com/sites/GdTest/_layouts/15/download.aspx?UniqueId=b9d25e13-c915-432f-b9fb-f2d36a188d9f&Translate=false&tempauth=eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAveWVlb2ZmaWNlc2cuc2hhcmVwb2ludC5jb21AMzgzMDNhNTQtMjUwMS00MDcwLTlkYjItYzNmNTY2OTc2NGUxIiwiaXNzIjoiMDAwMDAwMDMtMDAwMC0wZmYxLWNlMDAtMDAwMDAwMDAwMDAwIiwibmJmIjoiMTU4NDY4MjQ5OSIsImV4cCI6IjE1ODQ2ODYwOTkiLCJlbmRwb2ludHVybCI6InltcjVvWHhDU0FIaFhhV0tYVnZuVDVjK05ETnZsejhzcC9YeFp3MStQaHc9IiwiZW5kcG9pbnR1cmxMZW5ndGgiOiIxMzUiLCJpc2xvb3BiYWNrIjoiVHJ1ZSIsImNpZCI6IlpUUmhPVFk1WkdFdE5EQXlOQzAwWlRnMExUazFZelF0WkRkalpqRmpOR1UxTm1ZMCIsInZlciI6Imhhc2hlZHByb29mdG9rZW4iLCJzaXRlaWQiOiJZV0pqTnpoak1EVXRZVGMzWWkwME5XSm1MV0V4WVRFdE5URm1NRGsxTkRoaU5EazMiLCJhcHBfZGlzcGxheW5hbWUiOiJIdHRwUmVxdWVzdCBUZXN0IiwibmFtZWlkIjoiNTk3ZDQ4YmMtMDVmMy00MTU4LThhY2MtYWU1Y2M3YTljNmFkQDM4MzAzYTU0LTI1MDEtNDA3MC05ZGIyLWMzZjU2Njk3NjRlMSIsInJvbGVzIjoiYWxsc2l0ZXMud3JpdGUgYWxsZmlsZXMud3JpdGUiLCJ0dCI6IjEiLCJ1c2VQZXJzaXN0ZW50Q29va2llIjpudWxsfQ.aTVxeDdWNkowcWFDK0xYOHUvZGo3K0VVSEd1dU02MFVheEFJbnBWWUJHTT0&ApiVersion=2.0",
    "createdDateTime": "2020-03-20T05:34:59Z",
    "eTag": "\"{B9D25E13-C915-432F-B9FB-F2D36A188D9F},1\"",
    "id": "016REKDTITL3JLSFOJF5B3T67S2NVBRDM7",
    "lastModifiedDateTime": "2020-03-20T05:34:59Z",
    "name": "test1212123.txt",
    "webUrl": "https://yeeofficesg.sharepoint.com/sites/GdTest/Shared%20Documents/test1212123.txt",
    "cTag": "\"c:{B9D25E13-C915-432F-B9FB-F2D36A188D9F},1\"",
    "size": 12,
    "createdBy": {
        "application": {
            "id": "597d48bc-05f3-4158-8acc-ae5cc7a9c6ad",
            "displayName": "HttpRequest Test"
        }
    },
    "lastModifiedBy": {
        "application": {
            "id": "597d48bc-05f3-4158-8acc-ae5cc7a9c6ad",
            "displayName": "HttpRequest Test"
        }
    },
    "parentReference": {
        "driveId": "b!BYzHq3unv0WhoVHwlUi0l_EO2rYM2NNCptmOTvJ-EqeM9aeJ-zj_TZktSrctfA1S",
        "driveType": "documentLibrary",
        "id": "016REKDTN6Y2GOVW7725BZO354PWSELRRZ",
        "path": "/drive/root:"
    },
    "file": {
        "mimeType": "text/plain",
        "hashes": {
            "quickXorHash": "RBBCDGQwAxrUIARAFAEJSgAAAAA="
        }
    },
    "fileSystemInfo": {
        "createdDateTime": "2020-03-20T05:34:59Z",
        "lastModifiedDateTime": "2020-03-20T05:34:59Z"
    }
    }
    
  3. 然后我想更新这个列表的自定义列。 https://graph.microsoft.com/v1.0/sites/abc78c05-a77b-45bf-a1a1-51f09548b497/lists/89a7f58c-38fb-4dff-992d-4ab72d7c0d52/items/80/fields

  4. 第 3 步,我需要商品 ID(本示例为:80),但是当我上传文件时,我无法直接从响应中获取商品 ID。

使用这个 api:https ://graph.microsoft.com/v1.0/sites/abc78c05-a77b-45bf-a1a1-51f09548b497/lists/89a7f58c-38fb-4dff-992d-4ab72d7c0d52/items/ 我可以得到项目列表其中需要包含项目 ID。

最后,我的问题是,当我将文件上传到共享点时,如何获得更新项目所需的项目 ID。

标签: sharepointmicrosoft-graph-api

解决方案


我最终从响应中提取了项目 GUID,即

"@microsoft.graph.downloadUrl": "https://yeeofficesg.sharepoint.com/sites/GdTest/_layouts/15/download.aspx?UniqueId= b9d25e13-c915-432f-b9fb-f2d36a188d9f &Translate=false&tempauth=... .

或者

"eTag": ""{ B9D25E13-C915-432F-B9FB-F2D36A188D9F },1""

或者

"cTag": ""c:{ B9D25E13-C915-432F-B9FB-F2D36A188D9F },1""

然后在需要项目 ID 的 PATCH 调用中使用它,即https://graph.microsoft.com/v1.0/sites/abc78c05-a77b-45bf-a1a1-51f09548b497/lists/89a7f58c-38fb-4dff- 992d-4ab72d7c0d52/items/**B9D25E13-C915-432F-B9FB-F2D36A188D9F**/fields

可能是解决问题的更优雅的方法,但这对我有用


推荐阅读