上传用户文件
无法下载的文件列表肯定会让用户失望,因此我们需要添加下载功能。 你可能认为这些文件会有简单的超链接,但请记住,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.downloadUrl
的 select()
选项。 必须为短期下载 URL 显式请求此属性,因为默认情况下不会返回该属性。
目标为 _self
的 window.open()
调用指示浏览器下载文件而不是导航到该文件。