javascript - 使用 javascript 谷歌驱动器下载文档 :can't download files

标签 javascript download google-drive-api documents

我通过使用 Google Drive API 和 java 从 Google Drive 下载文档。但我想使用 javascript 而不是 java。所以我正在使用 Drive API 客户端库 java 脚本代码。 我正在使用下面的代码来实现此目的

function downloadFile(file, callback) {
  if (file.downloadUrl) {
    var accessToken = gapi.auth.getToken().access_token;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', file.downloadUrl);
    xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    xhr.onload = function() {
      callback(xhr.responseText);
    };
    xhr.onerror = function() {
      callback(null);
    };
    xhr.send();
  } else {
    callback(null);
  }
}

我的问题是我能够显示所有文件名和内容。但我无法下载文件。我需要做任何额外的代码吗?我如何将文件保存在本地系统中。有什么建议 ? 注意:如果我将 downloadUrl 粘贴到浏览器中,我可以在 file.downloadUrl 中获取值,它不会给出任何结果,只会显示一个空白页面。

最佳答案

“如果我将 downloadUrl 粘贴到浏览器中,它将不会给出任何结果”是正确的,因为当您使用浏览器 GET 时,没有身份验证 header 。如果您检查状态,您将看到 401 错误。

我使用“授权:'OAuth'+gapi.auth.getToken()['access_token']”而不是'Bearer'。我不确定这是否重要。

您确定 downloadUrl 是最新的吗?这是一个短暂的属性,因此链接可能已过期。

访问 token 也可能无效。正如 Burcu 所说,您的答案可能在您的 xhr 获取的响应和状态中。

关于javascript - 使用 javascript 谷歌驱动器下载文档 :can't download files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17827888/

相关文章:

javascript - 饼图颜色不变

javascript - 获取两个日期之间的差异

maven - 在 IntelliJ 中仅下载一个 Maven 依赖项的文档

javascript - Java 通过下载对话框从 url 下载文件

java - 未出现保存文件对话框

ios - 适用于 iOS 的 Google 云端硬盘实时 API

google-drive-api - 为什么对gapi.client.drive.realtime.get的响应为空?

javascript - AngularJs:让方法在内部调用 $http 或 $resource 时同步返回

php - 将 Evercookie 值传递出函数

java - 使用 Google Drive API HTML+ 图像 + CSS 转 PDF