Microsoft Graph:将文件上传到共享库而不是用户的库?

时间:2016-11-01 21:48:48

标签: onedrive microsoft-graph

在有关Upload的文档中,列出了以下请求选项:

PUT /me/drive/items/{parent-id}:/{filename}:/content
PUT /me/drive/root:/{parent-path}/{filename}:/content
PUT /me/drive/items/{parent-id}/children/{filename}/content
PUT /groups/<id>/drive/items/<parent-id>/children/<filename>/content

在有关可恢复上传的文档中,Create an upload session显示以下选项:

POST /me/drive/root:/{path-to-item}:/createUploadSession
POST /me/drive/items/{parent-item-id}:/{filename}:/createUploadSession

如果我必须上传到其他(不是'我')驱动器怎么办?例如,默认的共享库(https://mycompany.sharepoint.com/Shared%20Documents),对于除上传之外的任何其他海豚,文档说明可以这样访问:

/drives/{drive-id}/items/{item-id}

所以,我的问题是:是否可以上传到“/共享文件”?如果是这样,哪个是PUT(小文件)或POST(上传会话)的正确语法? 也许类似于此? (我刚刚做了这个,它不起作用)

PUT /drives/{drive-id}/items/{parent-id}/{filename}:/content

或(如果是上传会话):

POST /drives/{drive-id}/items/{parent-item-id}:/{filename}:/createUploadSession

例如,在Graph Explorer中,响应如下:

/v1.0/drives/THEDRIVEID/items/THEFOLDERID:/whatever.jpg:/createUploadSession

是:

{
    "error": {
        "code": "invalidRequest",
        "message": "A valid path must be provided.",
        "innerError": {
            "request-id": "THERETURNEDID",
            "date": "THERETURNEDDATE"
        }
    }
}

编辑:因为公司的root也可以作为/ drive / root /访问,我也试过(没有运气,在1.0和beta版):

/drive/root:/whatever.jpg:/createUploadSession
/drive/root/whatever.jpg:/createUploadSession

1 个答案:

答案 0 :(得分:0)

这是可能的,但您需要正确的应用程序权限才能在用户的OneDrive之外读取/创建文件。您需要请求Sites.ReadWrite.All而不是请求Files.ReadWrite,然后使用/v1.0/drive/root:/file.bin:/createUploadSession

您还可以使用Microsoft Graph中的SharePoint Sites API访问团队网站文档库(根网站除外)。但是,此API仍处于测试版,不应在生产应用中使用。