练习 - 上传用户文件
下面是将上传功能添加到应用的步骤。
显示用于上传的浏览器输入元素和事件处理程序
打开 index.html 文件。
找到行
<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>
现在,在代码编辑器中打开 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 添加可上传文件的函数
在代码编辑器中打开 graph.js 文件。
在文件底部添加此函数:
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); } }
在继续操作之前,请确保保存 graph.js 文件。
运行应用
请刷新浏览器。 登录时,应该会看到一个上传按钮。
选择该按钮,然后从计算机中选择一个文件。 你可能会注意到,首次上传时会出现新的同意弹出窗口,向你请求写入和读取文件的权限。 文件开始上传时,将显示一条消息。
首次执行此操作时,你将看到另一个同意弹出窗口,因为现在你在要求写入文件。
上传完成后,消息将显示上传的字节数,文件将显示在文件列表中。
通过在终端窗口中选择 CTRL+C 来停止 Node.js 服务器。