koa-formidable
Version:
Formidable middleware for Koa
30 lines (25 loc) • 691 B
JavaScript
var formidable = require('formidable')
var middleware = module.exports = function(opts) {
return function *formidable(next) {
var res = yield middleware.parse(opts, this)
this.request.body = res.fields
this.request.files = res.files
yield next
}
}
middleware.parse = function(opts, ctx) {
if (!ctx) {
ctx = opts
opts = {}
}
return function(done) {
var form = (typeof opts === 'object' && opts.constructor.name === 'IncomingForm')
? opts
: new formidable.IncomingForm(opts)
form.parse(ctx.req, function(err, fields, files) {
if (err) return done(err)
done(null, { fields: fields, files: files })
})
}
}