Microsoft图形驱动器项目webUrl不提供与OneDrive相同的查看功能

时间:2019-05-01 22:50:58

标签: microsoft-graph

Microsoft图形驱动器项webUrl根据文档提供驱动器项的视图URL: “在浏览器中显示资源的URL。只读。”

我们发现返回的图片和视频的网址具有以下两种作用之一:

  • 返回带有img或视频标签的html页面,以显示/播放文件
  • 下载文件

例如,下载了avi文件,但是如果我们转到OneDrive并进行“预览”,则会弹出一个观众来播放视频。

有什么方法可以通过api而不是webUrl提供的视图URL来获取。网址似乎采用以下形式: https://jostledev-my.sharepoint.com/personal/xxx/_layouts/15/onedrive.aspx?FolderCTID=yyy&id=%2Fpersonal%2Fxxx%2FDocuments%2FJostle%20Storage%2FWildlife%2Ewmv&parent=%2Fpersonal%2Fxxx%2FDocuments%2FJostle%20Storage

1 个答案:

答案 0 :(得分:0)

实际上,DriveItem webUrl属性在One Drive中返回原始到资产的网址

要返回页面链接,可以使用Create a sharing link端点,例如请求:

POST /me/drive/items/{item-id}/createLink
Content-type: application/json

{
  "type": "view",
  "scope": "anonymous"
}

应返回以下响应

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#permission",
    "@odata.type": "#microsoft.graph.permission",
    "id": "34e2cb9c-bab6-4a60-b48b-f274af531ba5",
    "roles": [
        "read"
    ],
    "link": {
        "scope": "anonymous",
        "type": "view",
        "webUrl": "https://contoso-my.sharepoint.com/:v:/g/personal/jdoe_contoso_onmicrosoft_com/EXU29gb_xaZCjCNqN7F0_AMBqt9rXdrE_E6GLDoSNAFOFg"
    }
}

其中link.webUrl属性包含页面链接。

更新

另一种选择是从DriveItem.webUrl属性构造页面网址,例如:

function createPageLink(webUrl){
   const oneDriveUrl = webUrl.substr(0,webUrl.indexOf('onmicrosoft_com') + 'onmicrosoft_com'.length);
   var relUrl = webUrl.substr(webUrl.indexOf('/personal'))
   const parentUrl = relUrl.split('/').slice(0, -1).join('/');
   return `${oneDriveUrl}/_layouts/15/onedrive.aspx?id=${relUrl}&parent=${parentUrl}`;    
}