Google Drive Node.js - 从节点v7更新到v9后上传文件时出错

时间:2018-03-01 15:05:44

标签: javascript node.js google-api google-drive-api

一年前我用google drive api v3编写了一个node.js脚本,我正在使用node v7。现在我决定更新到v9并更新我的所有节点模块。但后来我遇到了很多问题。

第一个问题是auth不再工作了。官方谷歌驱动器文档还没有更新自己的代码,所以我发现随机评论的解决方案。例如

const readline = require('readline'),
  { google } = require('googleapis'),
  service = google.drive('v3'),
  { OAuth2Client } = require('google-auth-library'),
  googleAuth = require('google-auth-library');

在我举例之前:

google = require('googleapis')

现在,在修复了auth后,google的quickstart文件再次运行,我能够创建我的令牌并列出我的文件等。

然后,当我从脚本到达上传区域时,我收到此错误代码:

Request body larger than maxBodyLength limit

我尝试将其与google drive api结合使用,但无法找到任何解决方案。我的代码可能已经过时了吗?因为使用节点v7和一年多前的谷歌模块,它就像一个魅力! :/

这是我的上传代码:

        var fileMetadata = {
        'name': together,
        parents: [ foldername_folderid ]

    }

    var media = {
        mimeType: 'application/octet-stream',
        body: fs.createReadStream('C:/testarea/file.container')  // <-- this is my own file format it worked before with the old google modules!
    }

    drive.files.create({
        resource: fileMetadata,
        media: media,
        auth: auth,
        fields: 'id'
    }, function(e, file) {
        if (e) {
          console.log('error: ' + e)
          return;
        } 


         //.. do something when upload successfully

    }); 

我上传的测试文件只有不到20MB,所以我认为问题与文件大小无关?如果有人对此有所了解会很棒!

编辑:代码正在使用一个非常小的文件,例如5MB以下..我认为谷歌改变了他们的库,他们不支持任何超过10MB的单个文件上传。我认为你必须使用分块上传

1 个答案:

答案 0 :(得分:0)

代码正在处理一个非常小的文件,例如5MB以下。我认为谷歌改变了他们的库,他们不再支持大于10MB的单个文件上传。我认为你必须使用chunked upload。

但是我找不到任何针对node.js的可恢复上传的示例代码...... https://developers.google.com/drive/v3/web/resumable-upload

也许有人有示例代码?我在这里为这个问题创建了一个新帖子: How to resumable upload with google drive node.js