我正在尝试使用 aws 上传一些文件并使用 busboy 模块上传 multipart/form-data 文件。但是用管道说是busboy控制response的时候,出现错误:
req.pipe is not a function
.
我的代码:
reqHeaders
是req.headers
;
reqFiles
是req.files
;
reqBody
是 req.body
:
reqPipe
是req.pipe
;
const errorThrow = require('../utils/errorThrow');
const busboy = require('busboy');
const aws = require('../utils/aws/aws');
const Arquivo = require('../database/models/arquivo');
const Servico = require('../database/models/servico');
/* formdata route */
const uploadDeArquivos = async (reqHeaders, reqFiles, reqBody, reqPipe) => {
let bb = busboy({ headers: reqHeaders });
bb.on('finish', async () => {
const { salaoId, servico } = reqBody;
let errors = [];
let arquivos = [];
if(reqFiles && Object.keys(reqFiles).length > 0) {
for (let key of Object.keys(reqFiles)) {
const file = reqFiles[key];
const splitName = file.name.split('.');
const fileName = `${new Date().getTime()}.${
splitName[splitName.length - 1]
}`;
const path = `servicos/${salaoId}/${fileName}`;
const response = await aws.uploadToS3(file, path);
response.error ? errors.push({ error: true, message: response.message })
: arquivos.push(path);
};
};
if (errors.length > 0) throw errorThrow(500, errors[0]);
//Criar Serviço
let jsonServico = JSON.parse(servico);
const novoServico = await Servico(jsonServico).save();
//Criar arquivo
arquivos = arquivos.map(arquivo => ({
referenciaId: novoServico._id,
model: 'Servico',
caminho: arquivo,
}));
await Arquivo.insertMany(arquivos);
return { servico: novoServico, arquivos };
});
reqPipe(bb);
};
module.exports = { uploadDeArquivos };