使用Microsoft图形C#ASP.NET将新文件上传到OneDrive
作者:互联网
尝试将文件上传到尚不存在的onedrive.我设法得到它来更新现有文件.但是似乎无法弄清楚如何创建一个全新的文件.我已经使用Microsoft.Graph库完成了此操作.
以下是用于更新现有文件的代码:
public async Task<ActionResult> OneDriveUpload()
{
string token = await GetAccessToken();
if (string.IsNullOrEmpty(token))
{
// If there's no token in the session, redirect to Home
return Redirect("/");
}
GraphServiceClient client = new GraphServiceClient(
new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", token);
return Task.FromResult(0);
}));
try
{
string path = @"C:/Users/user/Desktop/testUpload.xlsx";
byte[] data = System.IO.File.ReadAllBytes(path);
Stream stream = new MemoryStream(data);
// Line that updates the existing file
await client.Me.Drive.Items["55BBAC51A4E4017D!104"].Content.Request().PutAsync<DriveItem>(stream);
return View("Index");
}
catch (ServiceException ex)
{
return RedirectToAction("Error", "Home", new { message = "ERROR retrieving messages", debug = ex.Message });
}
}
解决方法:
我建议使用SDK中包含的ChunkedUploadProvider
实用程序.除了易于使用之外,它还允许您上传任何一侧的文件,而不仅限于4MB以下的文件.
您可以在OneDriveUploadLargeFile
单元测试中找到有关如何使用ChunkedUploadProvider的示例.
为了回答您的直接问题,上传对于替换和创建文件都是相同的.但是,您确实需要指定文件名,而不只是现有的项目号:
await graphClient.Me
.Drive
.Root
.ItemWithPath("fileName")
.Content
.Request()
.PutAsync<DriveItem>(stream);
标签:microsoft-graph,onedrive,c 来源: https://codeday.me/bug/20191025/1927065.html