[](https://github.com/climba03003/fastify-formidable/actions/workflows/ci.yml) [




This plugin add a handy parser for multipart/form-data by using formidable and provide a better integration between multipart/form-data and fastify-swagger
npm install fastify-formidable --saveyarn add fastify-formidable
`Usage
`ts
import FastifyFormidable, { kFileSavedPaths, kIsMultipart, kIsMultipartParsed } from 'fastify-formidable'fastify.register(FastifyFormidable)
fastify.post('/', async function(request, reply) {
// you need to call the parser if you do not pass any option through plugin registration
await request.parseMultipart()
// access files
request.files
// access body
// note that file fields will exist in body and it will becomes the file path saved on disk
request.body
// access all the files path
request[kFileSavedPaths]
// check if it is multipart
if( request[kIsMultipart] === true ) {}
// check if it is already parsed
if ( request[kIsMultipartParsed] === true ) {}
})
// add content type parser which will automatic parse all
multipart/form-data found
fastify.register(FastifyFormidable, {
addContentTypeParser: true
})// add
preValidation hook which will automatic parse all multipart/form-data found
fastify.register(FastifyFormidable, {
addHooks: true
})
`$3
#### options.formidable
The options which will be directly passed to
formidable.`ts
import FastifyFormidable from 'fastify-formidable'fastify.register(FastifyFormidable, {
formidable: {
maxFileSize: 1000,
// this folder will be automatic created by this plugin
uploadDir: '/'
}
})
`formidable#### options.removeFilesFromBody
This options will add a
preHandler hooks to remove files from body.`ts
import FastifyFormidable from 'fastify-formidable'fastify.register(FastifyFormidable, {
removeFilesFromBody: true
})
`$3
It is a known limitation for
fastify-multipart integrate with fastify-swagger and this plugin provide a relatively simple solution for the integration.`ts
import Fastify from 'fastify'
import FastifyFormidable, { ajvBinaryFormat } from 'fastify-formidable'
import FastifySwagger from 'fastify-swagger'const fastify = Fastify({
ajv: {
plugins: [ ajvBinaryFormat ]
}
})
fastify.register(FastifyFormidable, {
addContentTypeParser: true
})
fastify.register(FastifySwagger)
``