使用Multer处理formdata

时间:2018-05-14 14:52:23

标签: javascript node.js mongodb multer

我有这个代码创建project并将图像上传到Amazon S3。

我正在使用Bodyparser中间件来处理来自客户端的数据,但经过一些研究后我发现它没有处理formdata。我需要使用multer或类似的库。

这是我尝试使用multer:

在处理Post Create功能import multer from 'multer'; const upload = multer(); routes.post( '/', upload.any('projectImage'), ProjectController.create, ); 请求的路径文件夹中,我添加了这样的内容:

Create

以下是export async function create(req, res, next) { const body = req.body; S3Upload(req, res, async (s3err, s3res) => { if (s3err) { res.send('Error occured uploading image') } else if (s3res && s3res.Location) { body.projectImage = s3res.Location try { return res .status(HTTPStatus.CREATED) .json(await Project.createProject(body, req.user._id)); } catch (err) { err.status = HTTPStatus.BAD_REQUEST; return next(err); } } else { res.send('Error creating project.') } }); } 功能:

/project

现在,当我向(node:77236) UnhandledPromiseRejectionWarning: TypeError: (0 , _s2.default) is not a function (node:77236) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) 路线发送帖子请求时。我收到这个错误:

Create

PS。 export async function S3Upload(req, res, callback) { const chunks = []; let fileType; let fileEncodingType; const busboy = new Busboy({ headers: req.headers, }); busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { filename.replace(/ /g, "_"); fileType = mimetype; fileEncodingType = encoding; file.on('data', data => { chunks.push(data) }); file.on('end', () => { console.log(`File [${filename}] Finished`); }); }); busboy.on('finish', () => { const userId = UUID(); const params = { Bucket: BUCKET_NAME, Key: userId, Body: Buffer.concat(chunks), ACL: ACL, ContentEncoding: fileEncodingType, ContentType: fileType } S3.upload(params, (err, s3res) => { if (err) { callback(err); } else { callback(null, s3res); } }); }); req.pipe(busboy); } 函数可以在不添加S3Upload的情况下完美运行。 &安培;如果我只发送文件,S3Upload也可以正常工作。它不起作用的唯一时间是我发送混合数据。即包含一些文本字段和文件的表单。

我没有发布S3Upload功能,但如果有人好奇,请告诉我,我会分享它的代码。

更新

(?:[^\,]*\,){18}BT
(?:[^\,]*\,){18}CV7
(?:[^\,]*\,){18}CV30

0 个答案:

没有答案