微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

处理多个流

如何解决处理多个流

我正在尝试使用流/流化器来处理流,但无论我尝试什么,我似乎都无法通过多个流处理程序来处理管道。我认为部分原因是我使用的两个组件(s3 和音乐元数据)似乎以不同的方式处理流。

所以目前,我不得不通过复制流对象并一个一个地运行它们来解决这个问题。我确定必须有更好的方法来做到这一点,使用 .pipe() 将其向前传递,或其他一些机制?

这是我目前所拥有的:

const AWS = require('aws-sdk');
const s3 = new AWS.S3( ... );
const express = require('express');
const fileUpload = require('express-fileupload');
const stream = require('stream');
const streamifier = require('streamifier');
const mm = require('music-Metadata');

const app = express();
app.use(
    fileUpload({
        limits: { fileSize: 50 * 1024 * 1024 },})
);

const s3upload = ({ Bucket,Key }) => {
    const pass = new stream.Passthrough();
    return {
        s3uploadStream: pass,promise: s3.upload({ Bucket,Key,Body: pass }).promise(),};
};

app.post('/',async function (req,res) {
    const fileStream1 = streamifier.createReadStream(req.files.file.data);
    const fileStream2 = streamifier.createReadStream(req.files.file.data); // want to lose this
    const { s3uploadStream,promise } = s3upload({ Bucket: 'mybucket',Key: req.files.file.name });
    let Meta = await mm.parseStream(fileStream1);
    let resp = fileStream2.pipe(s3uploadStream);
    await promise;
    res.status(200).send(Meta);
});

app.listen(3000);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。