我想将最大1GB的文件上传到Google Cloud Storage。我使用的是 Google App Engine Flexible。据我了解,GAE 对文件上传有 32MB 的限制,这意味着我必须直接上传到 GCS 或将文件分解为块。
几年前的这个答案建议使用 Blobstore API,但是似乎没有 Node 的选项.js文档还建议使用 GCS 而不是 Blobstore 来存储文件。
在进行了一些搜索之后,似乎使用签名的网址直接上传到GCS可能是最好的选择,但是我找不到有关如何执行此操作的任何示例代码。这是最好的方法吗,是否有任何示例说明如何使用带有 Node.js 的 App Engine 来执行此操作?
最好的办法是使用 Node 的 Cloud Storage 客户端库.js来创建可恢复的上传。
下面是有关如何创建会话 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。