मैं आप से एक ही जांच के माध्यम से चला गया और यहां multipart/form-data
शरीर कोआ साथ पार्स करने को प्राप्त करने के अन्य तरीके हैं।
सह busboy:
var koa = require('koa');
var parse = require('co-busboy');
const app = koa();
app.use(function* (next) {
// the body isn't multipart, so busboy can't parse it
if (!this.request.is('multipart/*')) return yield next;
var parts = parse(this),
part,
fields = {};
while (part = yield parts) {
if (part.length) {
// arrays are busboy fields
console.log('key: ' + part[0]);
console.log('value: ' + part[1]);
fields[part[0]] = part[1];
} else {
// it's a stream, you can do something like:
// part.pipe(fs.createWriteStream('some file.txt'));
}
}
this.body = JSON.stringify(fields, null, 2);
})
koa-शरीर:
var koa = require('koa');
var router = require('koa-router');
var koaBody = require('koa-body')({ multipart: true });
const app = koa();
app.use(router(app));
app.post('/', koaBody, function *(next) {
console.log(this.request.body.fields);
this.body = JSON.stringify(this.request.body, null, 2);
});
दोनों ही मामलों में आप की तरह एक प्रतिक्रिया करना होगा:
{
"topsecret": 1,
"area51": {
"lat": "37.235065",
"lng": "-115.811117",
}
}
लेकिन व्यक्तिगत रूप से, मैं रास्ता पसंद करते हैं ओए-बॉडी काम करता है। इसके अलावा, koa-validate जैसे अन्य मिडलवेयर के साथ संगत है।
इसके अलावा, अगर आप कोआ-शरीर के लिए एक अपलोड निर्देशिका निर्दिष्ट, यह अपलोड की गई फ़ाइल आप के लिए बचत होगी:
var koaBody = require('koa-body')({
multipart: true,
formidable: { uploadDir: path.join(__dirname, 'tmp') }
});
मैं वास्तव में [पूछा क्यों] (https://github.com/koa-modules/multer/issues/2) 'this.request पर नहीं उपलब्ध में भाग पार्स '। – eightyfive