如何解决处理多个流
我正在尝试使用流/流化器来处理流,但无论我尝试什么,我似乎都无法通过多个流处理程序来处理管道。我认为部分原因是我使用的两个组件(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 举报,一经查实,本站将立刻删除。