下載使用者檔案

已完成

一份無法下載的檔案清單,一定會讓使用者失望,因此我們需要新增下載功能。 您可能會認為這些檔案會提供簡單的超連結,但請記住,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() 呼叫會指示瀏覽器下載檔案,而不是瀏覽至該檔案。