我一直试图上载到OneDrive帐户,但我无法上载不能少于或大于4MB的文件。我完全没有访问驱动器的问题,因为我具有创建文件夹,重命名文件/文件夹和删除文件/文件夹的工作功能。
https://docs.microsoft.com/zh-CN/graph/api/driveitem-put-content?view=graph-rest-1.0&tabs=csharp
Microsoft Graph API上的该文档对HTTP代码非常友好,我相信我能够将文档“转换”为C#,但仍然无法抓取文件并将其上传到OneDrive。在线上的某些地方似乎正在使用字节数组?我完全不熟悉它,因为我的主要语言是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中上载一个带有波浪号“〜”的临时文件(就像我只能打开文件但不能将任何数据从文件导入到其中一样)。如果我交换文件名,使其包含文件位置,则会引发错误:
消息:在打开的属性上找到函数“ microsoft.graph.createUploadSession”。不支持有关开放属性的功能。
谢谢,任何意见和帮助都将非常重要。
尝试使用此方法处理内存流并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版测试了此代码段。希望它也对您有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句