首页 文章

Microsoft Graph API - 读取Office 365 SharePoint列表和拉取数据(图像)

提问于
浏览
1

放弃以下帖子:Microsoft Graph API - Office 365 Access SharePoint Nested Folder Items

我可以通过Graph API获取图像列表 . 我有一个MVC Azure应用程序,我正在进行这些Graph API调用 .

但是,当我尝试通过 webUrl 属性访问图像时,我被拒绝访问 .

我已经能够通过使用我可以访问的 @microsoft.graph.downloadUrl 属性来解决这个问题,通过 HttpClient 转换为字节数组并将其转换为缩略图 .

然而,理想情况下,我只能使用我的MVC站点对图表 endpoints 进行切片和切块,然后只需输出 webUrl ,这样我就不必处理调整大小或存储图像字节数据 .

首先,为什么 webUrl 返回拒绝访问?

第二,通过我的MVC应用程序管理图像URL的最佳方法是什么?我不想负责住房/改造图像 . 数据需要公开访问 .

1 回答

  • 1

    有几种方法可以做到这一点,但考虑到你're looking to show a thumbnail, I'看看/thumbnails endpoints :

    GET /sites/{site-id}/drive/items/{item-id}/thumbnails
    

    您可以将此与 /content endpoints 结合使用以检索二进制文件本身:

    GET /me/drive/items/{item-id}/thumbnails/{thumb-id}/{size}/content
    

    至于如何处理二进制结果,我通常在后端对其进行Base64编码并将数据URL返回给客户端 . 您还可以缓存此结果,并让您的方法在向Graph发出新请求之前检查有效的缓存副本 .

    这对于配置文件照片和缩略图非常有用,其中数据非常小 .

    使用.NET Graph Client SDK在C#中执行此操作的示例:

    var imageStream = await graphClient.Me
        .Photo
        .Content
        .Request()
        .GetAsync();
    
    using (var memoryStream = new MemoryStream())
    {
        imageStream.CopyTo(memoryStream);
        var base64pic = Convert.ToBase64String(memoryStream.ToArray());
        return "data:image;base64," + base64pic;
    }
    

相关问题