사용자 파일 다운로드

완료됨

다운로드가 불가능한 파일 목록은 사용자를 실망시킬 수 있으므로 다운로드 기능을 추가해야 합니다. 이러한 파일에는 간단한 하이퍼링크가 있다고 생각할 수 있지만 Microsoft 365는 안전한 환경이므로 다운로드를 보호해야 합니다. Microsoft Graph는 보안이 기본 제공되는 일시적인 다운로드 URL을 제공하지만 이는 즉시 사용되어야 합니다.

파일 목록을 검색할 때 사용자가 파일을 선택하기 전에 잘못된 URL을 검색하는 대신, 코드에서 각 파일의 ID를 요청합니다. 사용자가 링크를 선택하는 즉시 파일 ID가 다운로드 URL로 교환됩니다. 다음은 참조용으로 다시 호출한 내용입니다.

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

사용자가 파일 링크를 선택하면 onClick 이벤트는 일시적인 URL을 검색하고 파일을 즉시 다운로드하는 downloadFile() 함수로 사용자를 보냅니다.

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

/me/drive/items/<file ID> 호출은 지정된 파일에 대한 메타데이터를 검색합니다. select() 옵션이 요청하는 @microsoft.graph.downloadUrl을 확인합니다. 이 속성은 기본적으로 반환되지 않으므로 일시적인 다운로드 URL에 대해 명시적으로 요청해야 합니다.

window.open() 호출은 대상이 _self인 브라우저에서 파일을 탐색하는 대신 다운로드를 하도록 지시합니다.