这是我的问题得到解决的方法:我正在制作流的副本以在实际上传之前进行验证。然后检查我对原始流的验证,一旦通过,我将复制的流上传到我想要的位置。
为了阅读 Csv 流,我找到了一个 npm 包:csv-parser( https://github.com/mafintosh/csv-parser ) ,我觉得它很容易处理诸如标头、数据之类的事件。
为了创建流的副本,我使用了以下逻辑:
const upstream = req.file('file');
const fileStreamMap = {};
const fileStreamMapCopy = {};
_.each(upstream._files, (file) => {
const stream = PassThrough();
const streamCopy = PassThrough();
file.stream.pipe(stream);
file.stream.pipe(streamCopy);
fileStreamMap[fileName] = stream;
fileStreamMapCopy[fileName] = streamCopy;
});
// validate and upload files to S3, if Valid.
validateAndUploadFile(fileStreamMap, fileStreamMapCopy);
}
validateAndUploadFile() 包含我的 csv 上传的自定义验证逻辑。
此外,我们可以使用 aws-sdk ( https://www.npmjs.com/package/aws-sdk ) 进行 s3 上传。希望,这可以帮助某人。