作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 C# 图形 sdk 将文件上传到 Sharepoint 在线文档库,但失败了。
我可以获取驱动器/库,但如果我将其作为驱动器获取,则根为空,并且出现异常。如果我将其作为列表处理,我似乎无法使用 CreateUploadSession 方法。
以列表形式获取文档库:
await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Request().GetAsync();
通过驱动器 ID 将文档库获取为驱动器似乎不起作用:
var drive = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Drives[driveId].Request().GetAsync();
将文档库作为其列表的驱动器获取:
var drive = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Drive.Request().GetAsync();
但尝试获取该云端硬盘的根目录会导致“错误请求:指定的 URL 无效”。尝试 Drive.Items.Request() 也是如此。但据我所知,我需要拥有驱动器的根目录才能执行此操作:
var uploadSession = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Drive.Root.ItemWithPath(file.FileName).CreateUploadSession().Request().PostAsync();
但是我有三个文档库,它们都将 Root 显示为空。显然我错过了一些东西,但我不清楚是什么。
最佳答案
确实,如果网站是 addressed by server-relative URL ,以下查询
GET https://graph.microsoft.com/v1.0/sites/{hostname}:/{server-relative-path}:/drive
成功并返回默认驱动器,同时显示以下内容:
GET https://graph.microsoft.com/v1.0/sites/{hostname}:/{server-relative-path}:/drive/root
失败并返回错误指定的 URL 无效。
这似乎是 Microsoft Graph 本身的一个错误。无论如何,可以考虑以下选项将文件上传到库中。
It is assumed
siteUrl
corresponds to site server relative url andlistId
to library unique identifier
它由以下步骤组成:
示例
//1.resolve site by server relative url
var targetSite = await graphClient.Sites.GetByPath(siteUrl,hostName).Request().GetAsync(); //2.access root folder for for a Library
var targetFolder = graphClient.Sites[targetSite.Id]
.Lists[listId]
.Drive
.Root;
//3.Upload a file
var pathToFile = @"c:\Temp\Guide.docx";
using (var fileStream = new FileStream(pathToFile, FileMode.Open, FileAccess.Read))
{
var uploadedItem = await targetFolder
.ItemWithPath("Guide.docx")
.Content
.Request()
.PutAsync<DriveItem>(fileStream);
}
哪里
hostName
是网站集主机名(例如contoso.sharepoint.com
)siteUrl
- 服务器相对站点 URL,例如/sites/management
关于c# - 将文件上传到 Sharepoint 在线图书馆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54262319/
我是一名优秀的程序员,十分优秀!