UNPKG

@aprilnea/nest-file-fastify

Version:

fastify-multipart decorators for Nest.js

121 lines (81 loc) 3.65 kB
> [!NOTE] > Note: This is a forked version of [Blazity/nest-file-fastify](https://github.com/Blazity/nest-file-fastify). > > The original repository has not been updated for more than 3 years, so I have decided to continue maintaining this useful library. I have fixed many bugs and plan to keep improving the project. > > If you are looking for an actively maintained @fastify/multipart decorator library for Nest.js, feel free to use this version. I'll be working hard to maintain compatibility with the stock API while adding new features and fixing problems! --- <div align="left"> <h1> fastify-multipart for Nest.js</h1> [![Github Actions](https://img.shields.io/github/workflow/status/aprilnea/nest-file-fastify/Build?style=flat-square)](https://github.com/aprilnea/nest-file-fastify) [![NPM](https://img.shields.io/npm/v/@aprilnea/nest-file-fastify.svg?style=flat-square)](https://www.npmjs.com/package/@aprilnea/nest-file-fastify) [![NPM](https://img.shields.io/npm/dm/@aprilnea/nest-file-fastify?style=flat-square)](https://www.npmjs.com/package/@aprilnea/nest-file-fastify) </div> This library adds decorators for [Nest.js](https://github.com/nestjs/nest) to support [@fastify/multipart](https://github.com/fastify/fastify-multipart). The API is very similar to the official Nest.js Express file decorators. ## Installation NPM ```bash $ npm install @aprilnea/nest-file-fastify @fastify/multipart ``` Yarn ```bash $ yarn add @aprilnea/nest-file-fastify @fastify/multipart ``` and register multpart plugin in your Nest.js application ```typescript import fastyfyMultipart from '@fastify/multipart'; ... app.register(fastyfyMultipart); ``` ## Docs ### Single file ```typescript import { FileInterceptor, UploadedFile, MemoryStorageFile } from '@aprilnea/nest-file-fastify'; @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file: MemoryStorageFile) { console.log(file); } ``` `FileInterceptor` arguments: - `fieldname`: string - name of the field that holds a file - `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4) ### Array of files ```typescript import { FilesInterceptor, UploadedFiles, MemoryStorageFile } from '@aprilnea/nest-file-fastify'; @Post('upload') @UseInterceptors(FilesInterceptor('files')) uploadFile(@UploadedFiles() files: MemoryStorageFile[]) { console.log(files); } ``` `FilesInterceptor` arguments: - `fieldname`: string - name of the field that holds files - `maxCount`: optional number - maximum number of files to accept - `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4) ### Multiple files ```typescript import { FileFieldsInterceptor, UploadedFiles, MemoryStorageFile } from '@aprilnea/nest-file-fastify'; @Post('upload') @UseInterceptors(FileFieldsInterceptor([ { name: 'avatar', maxCount: 1 }, { name: 'background', maxCount: 1 }, ])) uploadFile(@UploadedFiles() files: { avatar?: MemoryStorageFile[], background?: MemoryStorageFile[] }) { console.log(files); } ``` `FileFieldsInterceptor` arguments: - `uploadFields`: object of type [`UploadField`](src/multipart/handlers/file-fields.ts#L10) - `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4) ### Any files ```typescript import { AnyFilesInterceptor, UploadedFiles, MemoryStorageFile } from '@aprilnea/nest-file-fastify'; @Post('upload') @UseInterceptors(AnyFilesInterceptor() uploadFile(@UploadedFiles() files: MemoryStorageFile[]) { console.log(files); } ``` `AnyFilesInterceptor` arguments: - `options`: optional object of type [`UploadOptions`](src/multipart/options.ts#L4)