【问题标题】:Upload large files to Google Cloud Storage using Google App Engine使用 Google App Engine 将大文件上传到 Google Cloud Storage
【发布时间】:2020-04-04 18:29:06
【问题描述】:

我想将最大 1GB 的文件上传到 Google Cloud Storage。我正在使用灵活的 Google App Engine。据我了解,GAE 对文件上传有 32MB 的限制,这意味着我必须直接上传到 GCS 或将文件分成块。

几年前的 answer 建议使用 Blobstore API,但似乎没有 Node.js 的选项,文档还建议使用 GCS 而不是 Blobstore 来存储文件。

在进行了一些搜索之后,似乎使用签名的 url 直接上传到 GCS 可能是最好的选择,但我无法找到任何有关如何执行此操作的示例代码。这是最好的方法吗?是否有任何示例说明如何将 App Engine 与 Node.js 结合使用?

【问题讨论】:

标签: node.js google-cloud-storage google-appengine-node


【解决方案1】:

最好的办法是使用适用于 Node.js 的 Cloud Storage 客户端库来创建 resumable upload

这是关于如何创建会话 URI 的 official 代码示例:

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const myBucket = storage.bucket('my-bucket');

const file = myBucket.file('my-file');
file.createResumableUpload(function(err, uri) {
  if (!err) {
    // `uri` can be used to PUT data to.
  }
});

//-
// If the callback is omitted, we'll return a Promise.
//-
file.createResumableUpload().then(function(data) {
  const uri = data[0];
});

编辑:现在您似乎可以使用createWriteStream 方法来执行上传,而不必担心创建 URL。

【讨论】:

  • 接下来你会用 URI 做什么?
  • 当您拥有 URI 时,您需要向它发出 PUT 请求(在第一个链接中进一步描述)。我已经更新了答案,因为现在您似乎可以使用 createWriteStream 方法绕过所有这些。
猜你喜欢
  • 2014-11-22
  • 2021-11-05
  • 2016-11-09
  • 2015-07-07
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 2013-11-02
相关资源
最近更新 更多