0

块引用

我有以下代码可以正常工作并将文件上传到根共享目录。

    var uploadedFile = await graphClient.Drive.Root
                                  .ItemWithPath(fileName)
                                  .Content
                                  .Request()
                                  .PutAsync<DriveItem>(fileStream);

但是,我无法解决如何将文件上传到在 SharePoint/OneDrive 中创建的另一个站点或文件夹。

这是我尝试使用的代码,我在 Sharepoint 中创建了一个名为“DocumentUpload”的新通信站点,但它出错了。

    var uploadedFile = await graphClient.Sites["DocumentUpload"].Drive.Root
                                  .ItemWithPath(fileName)
                                  .Content
                                  .Request()
                                  .PutAsync<DriveItem>(fileStream);

当我使用上面的代码时,我收到以下错误:

Microsoft.Graph.ServiceException:'代码:invalidRequest 消息:此租户的主机名无效内部错误:AdditionalData:日期:2022-02-28T13:17:25 request-id:{Guid} client-request-id:{Guid} ClientRequestId : {指导} '

任何帮助将不胜感激。

4

1 回答 1

0

为了获取站点 ID,我必须执行一个 GET 请求,其中我传入主机名(例如 xxxx.sharepoint.com)和相对路径(例如站点/DocumentUpload),如下所示。

然后我得到一个回复​​,我可以在 graphClient.Sites 调用中使用我很困惑我在哪里传递“DocumentUpload”而不是最终看起来像这样“xxxx.sharepoint.com,{Guid}, {指导}"

    using (var request = new HttpRequestMessage(new HttpMethod("GET"), $"https://graph.microsoft.com/v1.0/sites/xxxx.sharepoint.com:/sites/DocumentUpload"))
    {
        request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_authResult.AccessToken}");
        var response = await httpClient.SendAsync(request);
        var siteDetails = JsonConvert.DeserializeObject<SiteDetails>(response.Content.ReadAsStringAsync().Result);

        ...

        if (fileInfo.Length < LARGE_FILE_SIZE)
        {
            // upload the file to OneDrive
            var uploadedFile = await graphClient.Sites[siteDetails.id].Drive.Root
                                          .ItemWithPath(fileName)
                                          .Content
                                          .Request()
                                          .PutAsync<DriveItem>(fileStream);
        }
    }
...
    class SiteDetails
    {
        public string id { get; set; }
        public string displayName { get; set; }
        public string name { get; set; }
        public DateTime createdDateTime { get; set; }
        public DateTime lastModifiedDateTime { get; set; }
        public string webUrl { get; set; }
    }

进行此更改后,文档将正常上传到该路径。

于 2022-03-02T00:27:10.967 回答