Я хочу загрузить довольно большие файлы в проекте 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 МБ есть только одна строка. Значит ли это, что весь файл хранится в памяти?
РЕДАКТИРОВАТЬ: busboy.end(req.rawBody)
от https://cloud.google.com/functions/docs/writing/http#multipart_data