基本文件下载示例

时间:2014-05-01 11:01:40

标签: node.js google-api-nodejs-client

我一直在努力让我的大脑阅读google-apis的nodejs文档。 我收集了一长串的例子,但是其中任何一个都能帮我做我想做的事。我只想使用节点js从我的驱动器下载文件。

我已设置OAUTH并使用此代码获取访问令牌(来源:http://masashi-k.blogspot.com.es/2013/07/accessing-to-my-google-drive-from-nodejs.html

var googleDrive = require('google-drive');
var GoogleTokenProvider = require("refresh-token").GoogleTokenProvider,
    async = require('async'),
    request = require('request'),
    _accessToken;

var tokenProvider = new GoogleTokenProvider({
  'refresh_token': REFRESH_TOKEN,
  'client_id' : CLIENT_ID,
  'client_secret': CLIENT_SECRET
});


tokenProvider.getToken(function(err, access_token) {
  console.log("Access Token=", access_token);
  _accessToken = access_token;
});

但我不知道如何从这里继续。我尝试过这样的事情没有运气:

function listFiles(token, callback) {
  googleDrive(token).files().get(callback)
}

function callback(err, response, body) {
  if (err) return console.log('err', err)
  console.log('response', response)
  console.log('body', JSON.parse(body))
}

listFiles(_accessToken,callback);

我觉得我非常接近,但我需要一些帮助。

提前致谢。

2 个答案:

答案 0 :(得分:2)

有两种方法可以执行此操作,具体取决于您要下载的内容。下载原生Google Doc文件和普通文件之间存在很大差异:

  • 必须使用files.export API方法下载文档,提供适当的mime类型以将文档转换为
  • 可以使用files.get方法下载普通文件,如果要下载文件数据而不是元数据,则提供正确的标记

我建议使用GoogleApis NodeJS库(https://github.com/google/google-api-nodejs-client

初始化云端硬盘API:

var Google = require('googleapis');
var OAuth2 = Google.auth.OAuth2;

var oauth2Client = new OAuth2('clientId','clientSecret','redirectUrl');
oauth2Client.setCredentials({
  access_token: 'accessTokenHere'
  refresh_token: 'refreshTokenHere'
});

var drive = Google.drive({
  version: 'v3',
  auth: this.oauth2Client
});

导入文件:

drive.files.get({
  fileId: fileId,
  alt: 'media' // THIS IS IMPORTANT PART! WITHOUT THIS YOU WOULD GET ONLY METADATA
}, function(err, result) {
  console.log(result); // Binary file content here
});

导出原生Google文档(您必须提供转换的mime类型):

drive.files.export({
  fileId: fileId,
  mimeType: 'application/pdf' // Provide mimetype of your liking from list of supported ones
}, function(err, result) {
  console.log(result); // Binary file content here
});

也许这会在很长一段时间后帮助别人;)

答案 1 :(得分:0)

https://github.com/google/google-api-nodejs-client

查看官方支持的适用于Google API的NodeJS客户端库

从云端硬盘获取文件所需的代码与用于将文件插入Google云端硬盘的自述文件底部的代码类似。您还可以使用API​​资源管理器测试API参数:https://developers.google.com/apis-explorer/#p/drive/v2/drive.files.get

以下是从Google云端硬盘获取文件的示例调用:

client
  .drive.files.get({ fileId: 'xxxx' })
  .execute(function(err, file) {
  // do something with file here
});