練習 - 上傳使用者檔案

已完成

以下是將上傳功能新增到應用程式的步驟。

顯示上傳的瀏覽器輸入元素和事件處理常式

  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 伺服器。