当前位置: 首页 > 知识库问答 >
问题:

在节点中使用googleapi从google drive导出文件。js

施阎宝
2023-03-14

我使用googleapi从谷歌驱动器导出文件。我有以下代码在我的export.js.当我运行这个文件,即使我给mimeType它抛出一个错误说"该API返回一个错误:错误:必需的参数:mimeType"

var drive = google.drive({
  version: 'v3',
  auth: auth
});

var dest = fs.createWriteStream('./public/data/myfile.txt');
drive.files.export({
  fileId : fileID,
  mimeType : 'text/plain'
}, function(err, response) {
  if (err) {
  console.log('The API returned an error: ' + err);
  return;
  }
  console.log('Received %d bytes', response.length);
  fs.writeFileSync(dest, response);
});

共有2个答案

姬成荫
2023-03-14

我想你可以这样尝试,确保你的文件与你所请求的mimeType匹配,也许你需要说你正在接受二进制数据。

drive.files.export({
   fileId: 'asxKJod9s79', // A Google Doc pdf
   mimeType: 'application/pdf'},
   { encoding: null }, // Make sure we get the binary data
   function (err, buffer) {
       // ...
       // convert and write the file
    });

请注意,API返回一个缓冲区对象,您需要将其转换并写入文件。参考这个。

或者你可以用这个:

var fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
var dest = fs.createWriteStream('/tmp/resume.pdf');
drive.files.export({
  fileId: fileId,
  mimeType: 'application/pdf'
})
    .on('end', function () {
      console.log('Done');
    })
    .on('error', function (err) {
      console.log('Error during download', err);
    })
    .pipe(dest);
颛孙高义
2023-03-14

Ohai!这里的维修工。当这样的事情发生时,通常是因为在googleapisgoogle-auth库之间存在一些不匹配。就代码而言,我们这里有一个完整的工作副本:

https://github.com/google/google-api-nodejs-client/blob/master/samples/drive/export.js

现在——该怎么办。你需要确保a.)你使用的是最新版本的GoogleAppis,b.)你的软件包中没有google auth库。json。请尝试:

$npm卸载--保存谷歌认证库$npm安装--保存googleapis@28

试一试,让我知道情况:)

 类似资料:
  • > 假设我有一个导出链接,如下所示:

  • 我试图创建一个nodejs应用程序,可以准备我的GoogleDrive文件。我不想要一个每个人都可以使用的应用程序,它只是特定于我的谷歌驱动。 我在控制台中为GoogleDrive创建了一个api密钥,没有任何限制。 这是我正在做的电话:https://www.googleapis.com/drive/v3/files?pageSize=10 当使用这个键我得到这个错误: 这在谷歌硬盘上可能吗?

  • 问题内容: 我正在使用Jenkins Build Flow插件来实现并行化。Groovy DSL执行某些文件操作。即使该选项设置为在特定从属服务器上运行作业,但DSL仍在主服务器上运行。这不是故意的。 有人可以告诉我如何限制DSL在指定的从站上运行吗?即使有一种方法可以通过DSL访问从文件系统,也应该可以。 通常,我们如何使用Groovy从Jenkins主节点访问节点从节点上的文件? 工作空间位于

  • 我正在开发一个android应用程序,我试图将谷歌驱动器集成到我的应用程序中。该程序是允许同步,所以它在SD卡上创建一个文件,然后这个文件被上传到谷歌驱动器上。我成功地进行了身份验证,但是当我使用函数上传时,我得到一个NullPointerException,并且我看不到值在哪里是null,因为当我遍历所有内容时,似乎没有任何内容是null。 下面是我用来执行上传的代码。 以下是我如何获得驱动器服

  • 问题内容: 我试图在节点中陷入进口的泥潭,并试图使用此示例中提供的语法: [备忘单链接](https://hackernoon.com/import-export-default-require-commandjs- javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f) 我正在浏览支持表,但无法找到

  • 最近我开始使用node。js。当我在我的一个项目中完成一个需求时,我面临一个问题,我应该能够将一些数据动态写入csv文件,并让它作为弹出窗口提示用户下载(如我们通常看到的,带有保存和取消选项)。在谷歌搜索了一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv-parser.我能够将数据写入文件并使用此模块进行保存。我想提示一个弹出窗口来保存