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