Скачивание файлов пользователей
Список файлов, которые невозможно скачать, обязательно разочарует пользователей, поэтому нам необходимо добавить функцию скачивания. Вы можете подумать, что у этих файлов будут простые гиперссылки, но помните, что 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-адреса скачивания необходимо запрашивать в явном виде, так как оно не возвращается по умолчанию.
Вызов window.open()
с целью _self
сообщает браузеру, что необходимо скачать файл, а не открывать его.