Compatibile with NestJS 7-11 and Fastify 3-5.
Install to your project:
npm i @webundsoehne/nest-fastify-file-upload
Configure your NestApplication to use the correct body parser.
Install npm i @fastify/multipart
as multipart body parser.
Register fastifyMultipart
in your root application after creation:
import { NestFactory } from '@nestjs/core'
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'
import { fastifyMultipart } from '@fastify/multipart'
import { AppModule } from './app.module'
async function bootstrap (): Promise<void> {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter())
await app.register(fastifyMultipart)
await app.listen(3000)
}
Register contentParser
in your root application after creation:
import { NestFactory } from '@nestjs/core'
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify'
import { contentParser } from 'fastify-multer'
import { AppModule } from './app.module'
async function bootstrap (): Promise<void> {
const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter())
await app.register(contentParser)
await app.listen(3000)
}
bootstrap()
Use it like the official NestJS package for Express in your controllers:
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
@ApiFileBody('file')
@ApiConsumes('multipart/form-data')
uploadFile (@UploadedFile('file') file: MulterFile): void {
console.log(file)
}
...
The package will export the missing Express.Multer.*
types as Multer*
.
more information: https://docs.nestjs.com/techniques/file-upload
Useful controller decorator that adds file upload functionality in Swagger.
You can specify the file key as parameter, default key is file
.
Register the MulterModule e.g. to directly upload to a specified directory.
import { Module } from '@nestjs/common'
import { AppController } from './app.controller'
import {MulterModule} from "../multer.module";
@Module({
controllers: [AppController],
imports: [
MulterModule.register({dest: './uploads'})
]
})
export class AppModule { }
more information and options: https://docs.nestjs.com/techniques/file-upload#default-options
- Do you have any additional questions?
- Author: Backend Team
- Website: Web & Söhne