연습 - 사용자 파일 업로드

완료됨

다음은 앱에 업로드 기능을 추가하는 단계입니다.

업로드에 대한 브라우저 입력 요소 및 이벤트 처리기 표시

  1. index.html 파일을 엽니다.

  2. <ul id="downloadLinks"></ul> 줄을 찾아 바로 다음에 변경 내용을 추가합니다.

    <!-- Add for file upload -->
    <hr />
    <input type="file" onchange="fileSelected(this);" />
    <div id="uploadMessage"></div>
    

    결과인 <div> 콘텐츠 블록은 다음과 같습니다.

    <div id="content" style="display: none;">
      <h4>Welcome <span id="userName"></span></h4>
      <!-- Add for file download -->
      <hr />
      <label>Files in your OneDrive root folder:</label>
      <ul id="downloadLinks"></ul>
      <!-- Add for file upload -->
      <hr />
      <input type="file" onchange="fileSelected(this);" />
      <div id="uploadMessage"></div>
    </div>
    
  3. 이제 코드 편집기에서 ui.js 파일을 열고 파일 끝에 다음 코드를 추가합니다.

    function fileSelected(e) {
      displayUploadMessage(`Uploading ${e.files[0].name}...`);
      uploadFile(e.files[0])
      .then((response) => {
        displayUploadMessage(`File ${response.name} of ${response.size} bytes uploaded`);
        displayFiles();
      });
    }
    
    function displayUploadMessage(message) {
        const messageElement = document.getElementById('uploadMessage');
        messageElement.innerText = message;
    }
    

Microsoft Graph SDK를 사용하여 파일을 업로드하는 함수 추가

  1. 코드 편집기에서 graph.js 파일을 엽니다.

  2. 파일 맨 아래에 이 함수를 추가합니다.

    async function uploadFile(file) {
      try {
        ensureScope('files.readwrite');
        let options = {
            path: "/",
            fileName: file.name,
            rangeSize: 1024 * 1024 // must be a multiple of 320 KiB
        };
        const uploadTask = await MicrosoftGraph.OneDriveLargeFileUploadTask
            .create(graphClient, file, options);
        const response = await uploadTask.upload();
        console.log(`File ${response.name} of ${response.size} bytes uploaded`);
        return response;
      } catch (error) {
        console.error(error);
      }
    }
    
  3. 계속하기 전에 graph.js 파일을 저장해야 합니다.

앱 실행

브라우저를 새로 고칩니다. 로그인하면 업로드 버튼이 표시됩니다.

브라우저의 파일 업로드 단추를 보여 주는 스크린샷

버튼을 선택하고 컴퓨터에서 파일을 선택합니다. 처음 업로드할 때 파일을 쓰고 읽을 수 있는 권한을 요청하는 새 동의 팝업 창이 표시될 수 있습니다. 파일 업로드가 시작되면 메시지가 나타납니다.

업로드할 파일 선택을 보여 주는 스크린샷

이 작업을 처음 수행하면 이제 파일을 쓰기를 요청하므로 다른 동의 팝업 창이 표시됩니다.

파일 업로드 동의를 보여 주는 스크린샷

업로드가 완료되면 메시지에 업로드된 바이트 수가 표시되고 파일이 파일 목록에 표시됩니다.

업로드 버튼이 있는 파일 목록을 보여 주는 스크린샷

터미널 창에서 Ctrl+C를 선택하여 Node.js 서버를 중지합니다.