ユーザー ファイルをダウンロードする

完了

ファイルのリストが表示されるだけでダウンロードする方法がないと、ユーザーを失望させてしまうので、ダウンロード機能を追加する必要があります。 これらのファイルには単純なハイパーリンクが使えると思われるかもしれませんが、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 に対して明示的に要求する必要があります。

ターゲットが _selfwindow.open() 呼び出しは、ファイルの場所に移動するのではなく、ファイルをダウンロードするようにブラウザーに指示します。