2016-12-22 110 views
1

我們正試圖使用​​Microsoft Graph rest API實現Web應用程序和SharePoint Online之間的集成。使用Microsoft Graph將文件上傳到SharePoint驅動器

具體而言,我們需要將文件上載到特定SharePoint網站的文檔庫(驅動器),這與當前的用戶默認驅動器不同。我們通過Azure AD獲取訪問令牌,並可訪問所有文件。

我們可以使用/v1.0/me/drive/...將文件上傳到任何驅動器,但不能在我們使用其他驅動器時使用。

例如:

var response = client.PutAsync(graphResourceUrl + 
    "/beta/sharepoint/sites/" + siteCollSiteId + 
    "/lists/" + listId + 
    "/drive/root/children/" + fileName + ":/content", 
    new ByteArrayContent(fileBytes)).Result; 

var response = client.PutAsync(graphResourceUrl + 
    "/beta/drives/" + "/" + listId + 
    "/items/" + siteCollSiteId + "/" + fileName + ":/content", 
    new ByteArrayContent(fileBytes)).Result; 

var response = client.PutAsync(graphResourceUrl + 
    "/beta/drives/" + listId + "/" + fileName + ":/content", 
    new ByteArrayContent(fileBytes)).Result; 

兩個/v1.0/beta(在含有路徑的SharePoint的情況下)我們得到的Not Implemented錯誤響應。

我們可能會做錯什麼?它是否尚未與Microsoft Graph(/me除外)一起工作?

+0

WHI ch auth作用域是否請求?您需要有'Sites.ReadWrite.All'才能訪問用戶默認驅動器之外的文檔庫。 –

+0

Thanks @ ryan-gregg,是的,我們在Azure AD應用程序中使用Graph的權限,其顯示爲「在所有網站集(預覽)中讀寫文件」。最好的問候,丹佛。 – danfer

回答

1

:/content 通常是更好地爲我獲得SP庫的驅動器Id先取下:,然後就在V1.0端點/v1.0/drive/{driveId}/

+0

對不起,但使用/v1.0/drive/{driveId}/建議時,我得到400個錯誤的請求響應,試圖將文件上載到我有權訪問的SharePoint站點中的驅動器。問候,丹佛。 – danfer

+1

@danfer注意細節(driveS不驅動器)'最終字符串端點= String.format(「%s/drives /%s/items /%s/children /%s/content」, Config.GRAPH_RESOURCE_URL,driveId, itemId,targetName);' – lolet

+1

你會使用/v1.0/drives/{driveid}不要忘記驅動器中的's' –

1

工作爲了要使用v1.0獲取驅動器的所有文件,首先需要獲取訪問令牌(我發現您已經通過了該令牌),然後獲取'drive-id'並使用以下URL(注意:它的不是「驅動」是「機」):

https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children 

獲取驅動器的ID,我用郵遞員,這將列出作了如下的GET請求所有網站上的驅動器,你將能夠獲得該驅動器的ID:

https://graph.microsoft.com/v1.0/sites/{tenant}.sharepoint.com:{path-to-site(ie: /sites/HR)}:/drives 

要回答你關於上傳文件的問題,你會做一個PUT請求發送到以下網址:

https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}/{file-name.txt}:/content 

您將需要設置兩個必需的頭:

  • 授權
  • 內容類型

接下來,您將傳遞文件的二進制流到請求的主體。

其他有用的物品

得到一個文件夾內的所有文件:

https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/{folder-name}:/children 

獲取用戶OneDrive的內容:

https://graph.microsoft.com/v1.0/me/drive/root/children 

參考: https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/driveitem_put_content#example-upload-a-new-file

相關問題