koa-body
Version:
A Koa body parser middleware. Supports multipart, urlencoded and JSON request bodies.
37 lines • 1.2 kB
JavaScript
import formidable from 'formidable';
function convertFormidableFields(fields) {
const result = {};
for (const key in fields) {
const value = fields[key];
if (value !== undefined) {
result[key] = value.length === 1 ? value[0] : value;
}
}
return result;
}
function convertFormidableFiles(files) {
const result = {};
for (const key in files) {
const value = files[key];
if (value !== undefined) {
result[key] = value.length === 1 ? value[0] : value;
}
}
return result;
}
export default async function parseWithFormidable(ctx, options) {
const { onFileBegin, onPart, ...directOptions } = options;
const form = formidable({ multiples: true, ...directOptions });
if (onPart) {
const delegate = form._handlePart.bind(form);
form.onPart = (part) => {
onPart(part, delegate);
};
}
if (onFileBegin) {
form.on('fileBegin', onFileBegin);
}
const [fields, files] = await form.parse(ctx.req);
return { fields: convertFormidableFields(fields), files: convertFormidableFiles(files) };
}
//# sourceMappingURL=parse-with-formidable.js.map