使用 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 在服务器出错或用户无权获取选定文件的链接时调用。

注意:如果 openInNewWindowfalse必须 先在网页上对所有回调函数进行全局声明,然后再引用 SDK,这样可保证函数得到调用。 此外,回调函数(successcancelerror)的值必须是经过全局定义的函数的字符串名称。

可以使用文件选取器 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 如果请求获取的 linkTypewebLinkmultiSelecttrue,而选取的又是 OneDrive 个人版中的文件,那么 link 将返回用于查看所有文件的 webLink。 否则,linknull
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 生成的链接类型(downloadLinkwebLink)。
size Integer 文件大小(以字节为单位)。
thumbnails String Array OneDrive 使用者版中图像或视频文件的一组缩略图链接(按大、中和小顺序排列)。对于其他类型文件,此值为 null。