问题描述
我正在尝试使用流/流化器来处理流,但无论我尝试什么,我似乎都无法通过多个流处理程序来处理管道。我认为部分原因是我使用的两个组件(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 (将#修改为@)