[英]How to upload to OneDrive using Microsoft Graph Api in c#
我一直在嘗試上傳到 OneDrive 帳戶,但我無可救葯地無法上傳小於或大於 4MB 的文件。 我完全沒有訪問驅動器的問題,因為我有創建文件夾、重命名文件/文件夾和刪除文件/文件夾的工作功能。
https://docs.microsoft.com/en-us/graph/api/driveitem-put-content?view=graph-rest-1.0&tabs=csharp
Microsoft Graph API 上的此文檔對 HTTP 代碼非常友好,我相信我能夠將文檔公平地“翻譯”為 C#,但仍然無法獲取文件並上傳到 OneDrive。 網上有些地方好像是用字節arrays? 我完全不熟悉,因為我的主要語言是 C++,我們只使用 ifstream/ofstream。 無論如何,這是具體的代碼部分(我希望這已經足夠了):
var item = await _client.Users[userID].Drive.Items[FolderID]//"01YZM7SMVOQ7YVNBXPZFFKNQAU5OB3XA3K"].Content
.ItemWithPath("LessThan4MB.txt")//"D:\\LessThan4MB.txt")
.CreateUploadSession()
.Request()
.PostAsync();
Console.WriteLine("done printing");
就目前而言,它會在 OneDrive 中上傳一個帶有波浪號“~”的臨時文件(就像我只能打開但不能從文件中導入任何數據一樣)。 如果我交換文件的名稱以使其包含文件位置,則會引發錯誤:
消息:在打開的屬性上找到了 function 'microsoft.graph.createUploadSession'。 不支持打開屬性的函數。
謝謝,任何評論和幫助都意義重大。
使用 memory stream 和PutAsync<DriveItem>
請求嘗試此方法:
string path = "D:\\LessThan4MB.txt";
byte[] data = System.IO.File.ReadAllBytes(path);
using (Stream stream = new MemoryStream(data))
{
var item = await _client.Me.Drive.Items[FolderID]
.ItemWithPath("LessThan4MB.txt")
.Content
.Request()
.PutAsync<DriveItem>(stream);
}
我假設您已經授予 Microsoft Graph Files.ReadWrite.All權限。 檢查您的API 權限。 我用相當舊的 Microsoft.Graph 庫版本 1.21.0 測試了這個代碼片段。 希望它也對你有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.