Télécharger des fichiers utilisateur

Effectué

Une liste de fichiers sans possibilité de les télécharger va certainement décevoir les utilisateurs. Nous devons donc ajouter une fonctionnalité de téléchargement. Vous pourriez penser que ces fichiers comporteraient des liens hypertexte simples, mais n’oubliez pas que Microsoft 365 est un environnement sécurisé. Par conséquent, nous devons sécuriser le téléchargement. Microsoft Graph fournit une URL de téléchargement de courte durée, dont la sécurité est intégrée, mais qui doit être utilisée immédiatement.

Lorsque vous récupérez une liste de fichiers, au lieu de récupérer des URL qui seraient non valides avant qu’un utilisateur puisse les sélectionner, le code demande l’ID de chaque fichier. Un échange de l’ID de fichier contre une URL de téléchargement se produit au moment où l’utilisateur clique sur le lien. Pour référence, voici ce rappel :

const response = await graphClient
    .api('/me/drive/root/children')
    .select('id,name,folder,package')
    .get();

Lorsqu’un utilisateur clique sur un lien de fichier, un onClick événement envoie l’utilisateur vers une downloadFile() fonction nommée qui récupère l’URL de courte durée, puis télécharge le fichier immédiatement.

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);
  }
}

L’/me/drive/items/<file ID> appel extrait les métadonnées à propos du fichier spécifié. Notez l’ select() option qui demande @microsoft.graph.downloadUrl. Cette propriété doit être explicitement demandée pour l’URL de téléchargement de courte durée, car elle n’est pas renvoyée par défaut.

L’appel window.open() avec la cible _self demande au navigateur de télécharger le fichier au lieu d’y accéder.