【问题标题】:How to update existing file on Google Drive with the Google API Node.js client?如何使用 Google API Node.js 客户端更新 Google Drive 上的现有文件?
【发布时间】:2019-06-25 19:16:52
【问题描述】:

我正在使用 Google API Node.js client 通过 Node.js 程序管理 Google Drive 上的文件。

我已成功使用此库下载文件,现在我想将文件的更新版本上传回 Google 云端硬盘。

documentation 很好地解释了如何在 Google 云端硬盘上创建文件:

var fileMetadata = {
  'name': 'photo.jpg'
};
var media = {
  mimeType: 'image/jpeg',
  body: fs.createReadStream('files/photo.jpg')
};
drive.files.create({
  resource: fileMetadata,
  media: media,
  fields: 'id'
}, function (err, file) {
  if (err) {
    // Handle error
    console.error(err);
  } else {
    console.log('File Id: ', file.id);
  }
});

但是,我找不到任何有关如何用新版本覆盖现有文件的信息。

Stack Overflow like this oneGoogle docs 上的其他帖子仅说明如何直接使用 Rest API 更新文件。

我想知道是否有更简单的方法 - 因为提供了一个很好的 API 客户端库,可以让我创建新文件,当然,它也应该让我更新现有文件?

【问题讨论】:

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


    【解决方案1】:

    要更新现有文件,请使用drive.files.update(定义here)。

    drive.files.update({
      fileId: file.id,
      resource: fileMetadata,
      media: media
    }, (err, file) => {
      if (err) {
        // Handle error
        console.error(err);
      } else {
        console.log('File Id: ', file.id);
      }
    });
    

    请注意,您还可以对drive.files.createdrive.files.update 使用promise 接口和async/await

    【讨论】:

    • 感谢您的回答!这似乎是正确的解决方案,不幸的是,它对我不起作用。不会引发错误,但 Google Drive 中的结果文件是空的(长度为 0 字节)。怎么会这样?这是我在 GitHub 上的代码:github.com/pahund/whats-going-on/blob/29-id-sync/src/… – 有什么遗漏吗?
    • @PatrickHund API 调用对我来说看起来是正确的(不过我没有尝试运行您的示例,问题可能出在其他地方)。我制作了一个 API here 的快速示例——它是独立的(只需要一个 JSON API 密钥)并且简单明了(OAuth2 部分除外 :))。它创建一个文件,然后更新它。你可以尝试从它开始。
    • 我发现,错误出在上一步,我正在编写要上传到文件系统的 zip 文件。我没有等待正确完成写入过程。现在都好了,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多