使用 Graph API 从 PlannerTask 下载 externalReference
Download an externalReference from PlannerTask using the Graph API
我想下载一个附加到 PlannerTask 的文件。我已经有了 ,但我不知道如何访问该文件。
外部引用是这样的 JSON 对象:
{
"https%3A//contoso%2Esharepoint%2Ecom/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx":
{
// ... snip ...
}
}
我尝试使用以下端点
GET /groups/{group-id}/drive/root:/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx
但我收到 404 响应。实际上,当我在 Graph Explorer 中使用查询时,它会警告我“URL 中的无效空格”(?)。
我发现的解决方法是使用 search
端点来查找这样的文件:
GET /groups/{group-id}/drive/root/search(q='AnnualReport.pptx')
希望文件名是唯一的。
无论如何,对于这两种方法,我都需要额外的信息(即 group-id
),这些信息在我拥有外部引用对象时可能无法轻易获得。
为 PlannerTask 中的外部引用对象引用的 driveItem 下载 url 的正确方法是什么?
我真的需要组 ID 才能访问此类文件吗?
外部引用中的键是 webUrl
个实例,因此它们可以与 /shares/
端点一起使用。有关如何操作的详细信息,请参阅 。
当您获得 driveItem
对象时,可从 AdditionalData
下载 url:driveItem.AdditionalData["@microsoft.graph.downloadUrl"]
。您可以使用 WebClient.DownloadFile
到 download the file on the local machine.
这是最终代码:
var remoteUri = "https%3A//contoso%2Esharepoint%2Ecom/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx";
var localFile = "/tmp/foo.pptx";
string sharingUrl = remoteUri;
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');
DriveItem driveItem = m_graphClient
.Shares[encodedUrl]
.DriveItem
.Request()
.GetAsync().Result;
using (WebClient client = new WebClient())
{
client.DownloadFile(driveItem.AdditionalData["@microsoft.graph.downloadUrl"].ToString(),
localFile);
}
我想下载一个附加到 PlannerTask 的文件。我已经有了
外部引用是这样的 JSON 对象:
{
"https%3A//contoso%2Esharepoint%2Ecom/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx":
{
// ... snip ...
}
}
我尝试使用以下端点
GET /groups/{group-id}/drive/root:/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx
但我收到 404 响应。实际上,当我在 Graph Explorer 中使用查询时,它会警告我“URL 中的无效空格”(?)。
我发现的解决方法是使用 search
端点来查找这样的文件:
GET /groups/{group-id}/drive/root/search(q='AnnualReport.pptx')
希望文件名是唯一的。
无论如何,对于这两种方法,我都需要额外的信息(即 group-id
),这些信息在我拥有外部引用对象时可能无法轻易获得。
为 PlannerTask 中的外部引用对象引用的 driveItem 下载 url 的正确方法是什么?
我真的需要组 ID 才能访问此类文件吗?
外部引用中的键是 webUrl
个实例,因此它们可以与 /shares/
端点一起使用。有关如何操作的详细信息,请参阅
当您获得 driveItem
对象时,可从 AdditionalData
下载 url:driveItem.AdditionalData["@microsoft.graph.downloadUrl"]
。您可以使用 WebClient.DownloadFile
到 download the file on the local machine.
这是最终代码:
var remoteUri = "https%3A//contoso%2Esharepoint%2Ecom/sites/GroupName/Shared%20Documents/AnnualReport%2Epptx";
var localFile = "/tmp/foo.pptx";
string sharingUrl = remoteUri;
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');
DriveItem driveItem = m_graphClient
.Shares[encodedUrl]
.DriveItem
.Request()
.GetAsync().Result;
using (WebClient client = new WebClient())
{
client.DownloadFile(driveItem.AdditionalData["@microsoft.graph.downloadUrl"].ToString(),
localFile);
}