使用 OneDrive 文件选取器 JavaScript SDK 打开文件
注意: 此版本已被替换成 文件选取器 v7.2。 应使用最新版文件选取器 SDK 实现新集成。
本主题逐步介绍了如何将文件选取器 SDK 嵌入 JavaScript 应用,并使用它打开 OneDrive 中的文件。
文件打开演示
1.添加对 SDK 的引用
若要打开文件,请在网页中添加以下引用,将 APP_ID 替换成 OneDrive 个人版和/或 OneDrive for Business 应用 ID。 若要同时使用这两种服务,可以同时添加两个 ID,并用逗号分隔。 可以将相同的应用 ID 用于文件打开和保存方案。
<script type="text/javascript" src="https://js.live.net/v6.0/OneDrive.js" id="onedrive-js" client-id="APP_ID"></script>
2.启动文件选取器
若要打开 OneDrive 中的文件,应用应提供以编程方式打开 OneDrive 文件选取器的按钮。 由于以下代码将在浏览器中启动弹出窗口,因此需要在显式用户操作期间调用,以免被弹出窗口阻止程序阻止。
在 OneDrive.open(...) 方法中指定选项,从而指定文件选取器的行为方式。
<script type="text/javascript">
function launchOneDrivePicker(){
var pickerOptions = { /* ... */ };
OneDrive.open(pickerOptions);
}
</script>
<button onClick="launchOneDrivePicker">Open from OneDrive</button>
文件选取器选项
可以提供包含控制文件选取器行为的参数的对象,指定文件选取器的行为方式。 此对象还包含文件选取器在完成时或遇到错误时所需的回调函数。
打开文件时,options 对象可以包含下列参数:
var pickerOptions = {
linkType: "downloadLink",
multiSelect: true,
openInNewWindow: true,
success: function(files) { /* success handler */ },
cancel: function() { /* cancel handler */ },
error: function(e) { /* error handler */ }
}
| 参数名称 | 说明 |
|---|---|
| linkType | 为了授予文件访问权限而创建的链接的类型。 默认值为 downloadLink,这将返回可提供对文件内容的一小时直接访问权限的 URL。 可以使用此 URL 将文件下载到应用中。 也可以请求获取 webLink,这将返回可提供文件 Web 预览的共享链接 URL。 在用户通过 OneDrive 删除共享链接前,此链接一直有效。 |
| multiSelect | 默认值可以是 false,允许用户选取一个文件;也可以是 true,允许用户选取多个文件。 |
| openInNewWindow | 默认值为 true,这将打开弹出窗口为用户提供 OneDrive 文件选取体验。 如果值为 false,将在同一窗口中为用户提供 OneDrive 文件选取体验。 |
| success | 必需。在用户选取完文件并将 file 对象数组传递给提供的函数时调用。 |
| cancel | 在用户取消文件选取器时调用。 |
| error | 在服务器出错或用户无权获取选定文件的链接时调用。 |
注意:如果 openInNewWindow 为 false,必须 先在网页上对所有回调函数进行全局声明,然后再引用 SDK,这样可保证函数得到调用。 此外,回调函数(success、cancel 和 error)的值必须是经过全局定义的函数的字符串名称。
链接类型
可以使用文件选取器 SDK 的 linkType 参数,指定在用户选取文件或文件夹后应返回的 URL 的类型。 可取值如下:
| 值 | 说明 |
|---|---|
| downloadLink | 用于下载选定文件内容的短期 URL。 |
| webLink | 允许接收者通过只读权限打开文件的长期 URL。 此 URL 不会到期。 |
pickerOptions 对象示例
var pickerOptions = {
success: function(files) {
// Handle returned file object(s)
alert("You picked " + files.values[0].fileName);
},
cancel: function() {
// Handle when the user cancels picking a file
},
error: function(e) {
// Handle when there is an error getting a link to the selected file
},
linkType: "downloadLink", // or webLink
multiSelect: false, // or true
openInNewWindow: true // or false
}
启动文件选取器后,将在弹出窗口或同一窗口中转到 OneDrive 文件选取器。 在用户取消或完成文件选取后,应用便会收到表示用户选取的文件的 response 对象。
处理对文件对象的选取器响应
在用户选取完文件后,success 回调会收到 response 对象,其中包含 values 属性,这是一组 file 对象,每个 select 的长度均为 1。
{
link: "https://...",
values: [
{
fileName: "file.txt",
link: "https://..."
}
]
}
response 对象具有以下属性:
| 属性名称 | 值 | 说明 |
|---|---|---|
| link | String | 如果请求获取的 linkType 是 webLink 且 multiSelect 是 true,而选取的又是 OneDrive 个人版中的文件,那么 link 将返回用于查看所有文件的 webLink。 否则,link 为 null。 |
| values | File Array | 表示用户选取的每个文件的 file 对象集合。 |
文件对象的示例
{
fileName: "file.txt",
link: "https://...",
linkType: "downloadLink",
size: 123456,
thumbnails: ["https://...", "https://...", "https://..."]
}
file 对象具有以下属性:
| 属性名称 | 值 | 说明 |
|---|---|---|
| fileName | String | 文件名(包含扩展名)。 |
| link | String | 提供对选定文件的访问权限的 URL |
| linkType | String | 生成的链接类型(downloadLink 或 webLink)。 |
| size | Integer | 文件大小(以字节为单位)。 |
| thumbnails | String Array | OneDrive 使用者版中图像或视频文件的一组缩略图链接(按大、中和小顺序排列)。对于其他类型文件,此值为 null。 |