我们需要将文档上传到 SharePoint Online 列表,然后向文档添加一些可搜索属性。我们正在使用 Microsoft Graph 上传文档。
由于我们需要能够根据不同的条件搜索文档,因此我们将文档上传到列表中。
这是请求的快照:
string requestUrl = "https://graph.microsoft.com/v1.0/drives/" +
driveID +
"/items/root:/" +
fileName +
".docx:/content";
HttpClient client = new HttpClient();
HttpRequestMessage message =
new HttpRequestMessage(HttpMethod.Put, requestUrl);
message.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", accessToken);
message.Content = new StreamContent(requestContent);
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type",
"application/json; odata=verbose; charset=utf-8");
HttpResponseMessage response = await client.SendAsync(message);
上传文档后,我们会收到包含 GUID 和文档名称的响应。
{
"createdDateTime": "2018-02-27T10:44:02Z",
"eTag": "\"{446F157D-ED2C-4C1B-BB3F-56897A6190DA},1\"",
"id": "01JSWLMSD5CVNHFLHNDNGLWP2WGNNGDEG2",
"lastModifiedDateTime": "2018-02-27T10:44:02Z",
"name": "2018-02-27 15.43.55.7268PM.docx"
}
当我们尝试获取该文档以添加填充列表中的其他列时,技巧就出现了。
我们可以通过使用以下方式获取该文档id
列表中文档的字段,但是id
当我们上传文档时,不会作为响应的一部分返回,因此无法将该值用于我们的请求。
我们的挑战是获得ListItem
使用我们从 JSON 响应返回的字段,但到目前为止,我们尝试过的每一种方法都导致了失败。
我们尝试过同时使用id
and name
上面的回复中提到的字段,但正在得到HTTP 400
回复。以下是我们尝试过的多种请求。
.../lists/My Library/items?expand=fields&filter=fields/name eq '2018-02-27 15.43.55.7268PM.docx'
and
...:/lists/My Library/items?filter=id eq '01JSWLMSD5CVXUILHDNGLWP2WGNNGDEG2'
我们在哪里失去它?