我想在node.js / Firebase项目中上传相当大的文件。我试图了解Busboy是否适合我的需求。
Busboy文档中的示例以
结尾req.pipe(busboy);
但是,这在Firebase中不起作用。看来您应该使用
busboy.end(req.rawBody);
这对我有用(至少在本地,firebase serve
下。但是也许有所不同。在上面提到的示例中,您有以下内容:
if (req.method === 'POST') {
let busboy = new Busboy({ headers: req.headers });
busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);
file.on('data', (data) => {
console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
});
file.on("data", ...)
的多个输出,但是100 MB文件只有一行。这是否意味着整个文件都保存在内存中?编辑:busboy.end(req.rawBody)
来自https://cloud.google.com/functions/docs/writing/http#multipart_data
答案 0 :(得分:1)
有关Cloud Functions输入和输出的整个请求和响应,在与客户端之间进行传输之前,将其完全保留在内存中。请求和响应的最大有效负载大小为10MB,如documentation所示。
在处理大文件时,您应该考虑上传到Cloud Functions,然后从那里触发一个函数。