node.js - 使用 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.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。
推荐阅读
- jquery - 滚动页面时如何实现窗口关闭(显示:无)?
- c++ - 为什么允许根据用户输入声明具有大小的自动数组?
- nginx - 基于url pa的nginx动态proxy_pass
- python - 正则表达式查找以大写字母开头的单词而不是句子的开头
- java - HttpServletRequest 中的参数名称是如何编码的
- nginx - nginx Sinatra 头部元刷新 404
- laravel-5 - 雄辩的按产品分组,根据产品进行不同的排序
- java - Java SWT 清除表头
- java - Spring - 如何重命名@Bean
- c# - How to Define that One String is Greater than Another? (C#) (Beginner)