通过 Node/Express 服务器将大文件 (2GB+) 流式传输到 Google Cloud Storage 存储桶

Ros*_*pol 5 file-upload large-files node.js express google-cloud-storage

我正在寻找将大文件(1GB+)从我的应用程序客户端上传到我的 Google Cloud Storage 存储桶的最佳方法(或方法)。

该存储桶是私有的,我当前正在尝试将文件发送到我的节点/express 服务器并将其流式传输到我的 GCS 存储桶。我认为由于服务器上的文件大小限制,我遇到了问题。对于较小的文件工作正常,但我用来测试它的 1GB 文件无法通过。

这些是我正在探索的替代方法:

  • 文件分割客户端,然后在发送到 GCS 之前重新组装服务器端
  • 通过 Google IAM API(GCS 写入访问权限)创建临时服务帐户,将其发送到客户端以便能够上传文件,上传确认后删除帐户(不理想,因为它会公开服务帐户)
  • ???

此时只是希望找到正确的方向。

Bra*_*ugh 5

最直接的传输是从客户端直接传输到 GCS。您可能希望向客户端发送一个签名 URL,他们将使用该 URL 来启动然后执行上传。您可能希望使用可续传上传,除非您希望客户拥有足够快的互联网而无需打扰。

让客户端上传到某个暂存 GCS 存储桶,然后通知您的应用程序上传已完成,这可能是一个好主意,此时您的应用程序会将其复制到最终存储桶(如果对象是在相同的区域和存储类别中),尽管这不是必需的。

我可能会尝试避免通过您的应用程序流式传输数据,除非您想以某种方式对其进行转换或希望透明地使用多个云提供商。

创建一次性服务帐户可能不是一个好主意。我不确定这些限制是临时的,但您可能会遇到扩大限制的问题。