上传用户文件

已完成

无法下载的文件列表肯定会让用户失望,因此我们需要添加下载功能。 你可能认为这些文件会有简单的超链接,但请记住,Microsoft 365 是一个安全的环境,因此需要确保下载的安全。 Microsoft Graph 提供了一个具有内置安全性的短期下载 URL,但需要立即使用它。

当检索文件列表时,该代码不会检索用户选择它们之前无效的 URL,而是请求每个文件的 ID。 当用户选择链接时,文件 ID 将交换为下载 URL。 此处再次调用以供参考:

const response = await graphClient
    .api('/me/drive/root/children')
    .select('id,name,folder,package')
    .get();

当用户选择文件链接时,onClick 事件会将用户发送到 downloadFile() 函数,该函数将检索短期 URL 并立即下载文件。

async function downloadFile(file) {
  try {
    const response = await graphClient
        .api(`/me/drive/items/${file.id}`)
        .select('@microsoft.graph.downloadUrl')
        .get();
    const downloadUrl = response["@microsoft.graph.downloadUrl"];
    window.open(downloadUrl, "_self");
  } catch (error) {
    console.error(error);
  }
}

/me/drive/items/<file ID> 调用检索有关指定文件的元数据。 请注意请求 @microsoft.graph.downloadUrlselect() 选项。 必须为短期下载 URL 显式请求此属性,因为默认情况下不会返回该属性。

目标为 _selfwindow.open() 调用指示浏览器下载文件而不是导航到该文件。