我通过使用带有java的Google驱动程序API从谷歌驱动器下载文档。但我想用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);
}
}
我的问题是我能够显示所有文件名和内容。但我无法下载文件。我需要做任何额外的代码吗?如何在本地系统中保存文件。有什么建议 ?
注意:我可以在file.downloadUrl
中获得价值,如果我将downloadUrl粘贴到浏览器中它不会给出任何结果,只显示一个空白页。
答案 0 :(得分:0)
“如果我将downloadUrl粘贴到浏览器中它将不会给出任何结果”是正确的,因为当您使用浏览器获取时没有身份验证标头。如果您检查状态,您将看到401错误。
我使用“授权:' OAuth '+ gapi.auth.getToken()['access_token']”而不是'承载'。我不确定这是否重要。
你确定downloadUrl是最新的吗?这是一个短期属性,因此链接可能已过期。
访问令牌也可能无效。正如Burcu所说,你的回答可能在xhr get的响应和状态之内。