下載使用者檔案
一份無法下載的檔案清單,一定會讓使用者失望,因此我們需要新增下載功能。 您可能會認為這些檔案會提供簡單的超連結,但請記住,Microsoft 365 是安全的環境,因此必須保護下載。 Microsoft Graph 提供具有內建安全性的短期下載 URL,但需要立即使用。
當您擷取檔案清單時,代碼會要求每個檔案的識別碼,而不是在使用者選取之前,先擷取不正確 URL。 檔案識別碼在使用者選取連結時立即交換下載 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>
擷取指定檔案的中繼資料。 請注意 select()
選項會要求 @microsoft.graph.downloadUrl
。 此屬性必須明確要求短期下載 URL,因為預設不會返回。
使用 _self
目標進行 window.open()
呼叫會指示瀏覽器下載檔案,而不是瀏覽至該檔案。