Baixar arquivos de usuário
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.