gpt4 book ai didi

node.js - 将流转换为缓冲区?

转载 作者:IT老高 更新时间:2023-10-28 22:02:51 26 4
gpt4 key购买 nike

如何在 nodejs 中将流转换为缓冲区?这是我在 express 中解析 post 请求中的文件的代码。

app.post('/upload', express.multipart({
defer: true
}), function(req, res) {
req.form.on('part', function(part) {

//Here I want to convert the streaming part into a buffer.
//do something buffer-specific task

var out = fs.createWriteStream('image/' + part.filename);
part.pipe(out);
});

req.form.on('close', function() {
res.send('uploaded!');
});
});

最佳答案

您可以将 readableend 事件处理程序附加到 part 流以读取它,而不是管道:

var buffers = [];
part.on('readable', function(buffer) {
for (;;) {
let buffer = part.read();
if (!buffer) { break; }
buffers.push(buffer);
}
});
part.on('end', function() {
var buffer = Buffer.concat(buffers);
...do your stuff...

// write to file:
fs.writeFile('image/' + part.filename, buffer, function(err) {
// handle error, return response, etc...
});
});

注意:如果您改为使用 data,它会将整个上传内容读入内存。

您还可以创建自定义 transform stream转换传入的数据,但这可能不是微不足道的。

关于node.js - 将流转换为缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com