练习 - 上传用户文件

已完成

下面是将上传功能添加到应用的步骤。

显示用于上传的浏览器输入元素和事件处理程序

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