0

我正在使用 gDrive SDK for javascript 中的此代码片段来下载文件:

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);
  }
}

ajax请求完成后如何提示浏览器打开下载窗口。如何制作回调函数以打开对话框以在本地保存文件?

4

1 回答 1

1

不幸的是,你的方法行不通。

由于标准浏览器安全限制,您无法从 Javascript 保存文件。[1]

您需要做的是在新窗口中使用 downloadUrl 或为 iframe 使用 src 以使浏览器下载文件,并提示用户保存。您将需要添加

&access_token=ya29.YOURACCESSTOKENHERE

到 URL 以避免 401 错误。

注释 1. 是的,我知道 HTML5 开始支持通过 Javascript 进行有限的文件系统访问,但是 (1) 它没有被广泛使用,(2) 对文件的保存位置有限制,并且 (3) 不是 UX OP要求。

于 2013-11-06T05:12:10.160 回答