Baixar arquivos de usuário

Concluído

Uma lista de arquivos sem nenhuma maneira de baixá-los certamente deixa os usuários desiludidos, portanto, precisamos adicionar um recurso de download. Você pode achar que esses arquivos teriam hiperlinks simples, mas lembre-se de que o Microsoft 365 é um ambiente seguro, portanto, o download precisa ser protegido. O Microsoft Graph fornece uma URL de download de curta duração que tem a segurança interna, mas que precisa ser usada imediatamente.

Quando você recupera uma lista de arquivos, em vez de recuperar as URLs que seriam inválidas antes que um usuário pudesse selecioná-las, o código solicita a ID de cada arquivo. A ID do arquivo é trocada por uma URL de download no momento em que o usuário seleciona o link. Essa é a chamada novamente para sua referência:

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

Quando um usuário seleciona um link de arquivo, um evento onClick envia o usuário para a função downloadFile() que recupera a URL de curta duração e baixa o arquivo imediatamente.

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

A /me/drive/items/<file ID> recupera metadados sobre o arquivo especificado. Observe a opção select() que solicita @microsoft.graph.downloadUrl. Essa propriedade deve ser explicitamente solicitada para a URL de download de curta duração porque ela não é retornada por padrão.

A chamada window.open() com um destino _self instrui o navegador a baixar o arquivo em vez de navegar até ele.