我正在使用Google Drive API v3来检索文件。我可以上传文件和列表文件,但files.get调用返回'false'。文档很稀疏(https://developers.google.com/drive/v3/reference/files/get)
var contentRequest = gapi.client.drive.files.get({
fileId: fileId,
alt: 'media'
});
contentRequest.execute(function(resp) {
console.log(resp); // resp = false
});
如果我删除“alt:'media'”参数,那么我会按照文档中的描述获取元数据。我也尝试过使用:
gapi.client.request
( {
'path': '/drive/v3/files/'+fileId,
'method': 'GET',
'params': {'fileId': fileId, 'alt': 'media'},
'headers': {'Authorization': 'Bearer ' + gapi.auth.getToken().access_token }
}).execute(function(file) {
// file = false
});
我能找到的唯一希望的痕迹被埋没在Google Client REST API文档中,该文档说如果不是JSON可解析的,则响应为“false”。 https://developers.google.com/api-client-library/javascript/features/promises
文件类型似乎没有区别......到目前为止,我已经尝试过.html和.txt。
答案 0 :(得分:1)
您需要使用回调的第二个参数 - 它应该包含原始响应。
request.execute(function(jsonResp, rawResp) {
console.log('rawResp: ', rawResp);
var respObject = JSON.parse(rawResp); // rawResp is encoded JSON string with header, body, etc.
var respBody = respObject.gapiRequest.data.body; // in my case here it outputs the text of my txt file
});
请求成功或失败时执行的回调函数。 jsonResp包含解析为JSON的响应。如果响应不是JSON,则此字段将为false。 rawResp是HTTP响应。它是JSON,可以解析为包含正文,标题,状态和statusText字段的对象。
P.S。很好的找到关于&#34的文档;而不是JSON-parseable"!它帮我解决了这个问题!
答案 1 :(得分:1)
在请求对象上调用execute时,我得到一个错误的响应。但是当打电话给"那么"它有效!
request.then(function(resp) {
console.log(resp);
console.log(resp.body); // The file content
});
答案 2 :(得分:0)
我相信这是您正在寻找的链接:)
https://developers.google.com/drive/v3/web/manage-downloads
下载文件要求用户至少具有读取权限。此外,您的应用必须使用允许读取文件内容的范围进行授权。例如,使用drive.readonly.metadata范围的应用程序无权下载文件内容。具有编辑权限的用户可以通过将viewersCanCopyContent字段设置为true来限制只读用户的下载。