Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';通过Microsoft Graph中的路径获取SharePoint文件的最简单方法是什么?_Sharepoint_Microsoft Graph Api - Fatal编程技术网

什么';通过Microsoft Graph中的路径获取SharePoint文件的最简单方法是什么?

什么';通过Microsoft Graph中的路径获取SharePoint文件的最简单方法是什么?,sharepoint,microsoft-graph-api,Sharepoint,Microsoft Graph Api,假设您有如下文件路径:https://contoso.sharepoint.com/sites/somesite/MyDocLib/Folder/Foo.docx 将此转换为Microsoft Graph调用以获取文件内容的最简单方法是什么?我假设我们需要使用正确的id通过驱动器端点执行此操作 我假设我可能必须运行多个调用,并且可能假设/slash1/slash2是站点,然后是doclib等(?)不确定这是最简单的还是唯一的选项,但下面的解决方案演示了如何 满足以下要求: 第一步是将URL转换

假设您有如下文件路径:
https://contoso.sharepoint.com/sites/somesite/MyDocLib/Folder/Foo.docx

将此转换为Microsoft Graph调用以获取文件内容的最简单方法是什么?我假设我们需要使用正确的id通过
驱动器
端点执行此操作


我假设我可能必须运行多个调用,并且可能假设/slash1/slash2是站点,然后是doclib等(?)

不确定这是最简单的还是唯一的选项,但下面的解决方案演示了如何
满足以下要求:

  • 第一步是将URL转换为一个共享令牌(请参阅下面的部分),我们将利用它
  • 生成共享令牌后,下载文件的OneDrive API请求可以如下构造:
    /shares/{sharedorecodesharingurl}/driveitem/content
如何将URL转换为共享令牌

对于url:

https://contoso.sharepoint.com/sites/somesite/MyDocLib/Folder/Foo.docx
应生成以下令牌:

u!aHR0cHM6Ly9jb250b3NvLnNoYXJlcG9pbnQuY29tL3NpdGVzL3NvbWVzaXRlL015RG9jTGliL0ZvbGRlci9Gb28uZG9jeA
关于如何对URL进行编码,请参见(此处提供了C版本)

NodeJS版本:

function urlToToSharingToken(url) {
    var trimEnd = function(str, c) {
        c = c ? c : ' ';
        var i = str.length - 1;
        for (; i >= 0 && str.charAt(i) == c; i--);
        return str.substring(0, i + 1);
    };
    var value = Buffer.from(url).toString('base64');
    return "u!" + trimEnd(value, '=').replace(/\//g, '_').replace(/\+/g, '-');
}
示例

该示例演示了如何通过
https://contoso.sharepoint.com/sites/somesite/MyDocLib/Folder/Foo.docx
使用以下格式:


这确实是一个非常好的解决方案——感谢您提供了创建共享编码部分的指针。比先获取驱动器,然后基于路径获取项目要好得多:)
    const sharedItemId = urlToToSharingToken(url);  //1.construct sharing token
    const requestUrl = "/shares/" + sharedItemId + "/driveitem/content";  //2. construct a query to download a file content

    return new Promise((resolve, reject) => {
        var builder = client.api(requestUrl);
        getAsBinary(builder, (err, stream) => {
            if (err) {
                return reject(err);
            }
            return resolve(stream);
        });
    });