Scaricare i file utente
Un elenco di file senza alcun modo per scaricarli è la ricetta perfetta per deludere gli utenti, quindi è necessario aggiungere una funzionalità di download. Si potrebbe pensare che questi file abbiano collegamenti ipertestuali semplici, ma essendo Microsoft 365 un ambiente sicuro il download deve essere protetto. Microsoft Graph fornisce un URL di download di breve durata con sicurezza integrata, ma deve essere usato immediatamente.
Quando si recupera un elenco di file, invece di recuperare URL che non sarebbero validi prima che un utente possa selezionarli, il codice richiede l'ID di ogni file. L'ID file viene sostituito con un URL di download nel momento in cui l'utente seleziona il collegamento. Ecco di nuovo la chiamata per il riferimento:
const response = await graphClient
.api('/me/drive/root/children')
.select('id,name,folder,package')
.get();
Quando un utente seleziona un collegamento di file, un evento onClick
invia l'utente alla funzione downloadFile()
che recupera l'URL di breve durata e scarica immediatamente il file.
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);
}
}
La chiamata /me/drive/items/<file ID>
recupera i metadati relativi al file specificato. Si noti l'opzione select()
che richiede @microsoft.graph.downloadUrl
. Questa proprietà deve essere richiesta in modo esplicito per l'URL di download di breve durata perché non viene restituita per impostazione predefinita.
La chiamata window.open()
con una destinazione _self
ordina al browser di scaricare il file invece di passare al file.