Descargar archivos de usuario

Completado

Una lista de archivos sin forma de descargarlos seguro decepcionará a los usuarios, por lo que es necesario agregar una característica de descarga. Es posible que piense que esos archivos tendrían simples hipervínculos, pero recuerde que Microsoft 365 es un entorno seguro, por lo que la descarga debe protegerse. Microsoft Graph proporciona una dirección URL de descarga de corta duración que tiene seguridad integrada, pero debe usarse inmediatamente.

Cuando se recupera una lista de archivos, en lugar de recuperar direcciones URL que no serían válidas antes de que un usuario pudiera seleccionarlas, el código solicita el identificador de cada archivo. El identificador de archivo se intercambia por una dirección URL de descarga en el momento en que el usuario selecciona el vínculo. Esta es la llamada de nuevo para su referencia:

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

Cuando un usuario selecciona un vínculo de archivo, un evento de onClick envía al usuario a la función downloadFile() que recupera la dirección URL de corta duración y descarga el archivo inmediatamente.

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 llamada /me/drive/items/<file ID> recupera metadatos sobre el archivo especificado. Observe la opción select() que solicita @microsoft.graph.downloadUrl. Esta propiedad debe solicitarse explícitamente para la dirección URL de descarga de corta duración porque no se devuelve de forma predeterminada.

La llamada window.open() con un destino de _self indica al explorador que descargue el archivo en lugar de navegar a él.