首页 > 解决方案 > 使用 Google App Engine 将大文件上传到 Google Cloud Storage

问题描述

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

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

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

标签: node.jsgoogle-cloud-storagegoogle-appengine-node

解决方案


您最好的选择是使用 Node.js 的 Cloud Storage 客户端库来创建可恢复的上传

下面是关于如何创建会话 URI的官方代码示例:

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。


推荐阅读