@webundsoehne/nest-fastify-file-upload v2.3.1
Port of Nest's file upload and MulterModule for FastifyAdapter
Compatibile with NestJS 7-11 and Fastify 3-5.
Steps:
Application Setup
Install to your project:
npm i @webundsoehne/nest-fastify-file-upload
Configure your NestApplication to use the correct body parser.
Nest 11+ / Fastify 5
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)
}Nest <= 10 / Fastify 3-4
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()File Controller Setup
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
@ApiFileBody Decorator
Useful controller decorator that adds file upload functionality in Swagger.
You can specify the file key as parameter, default key is file.
MulterModule
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
Stay in touch
- Do you have any additional questions?
- Author: Backend Team
- Website: Web & Söhne