@blazity/nest-file-fastify
Version:
fastify-multipart decorators for Nest.js
102 lines (68 loc) • 3.07 kB
Markdown
<div align="left">
<h1> fastify-multipart for Nest.js</h1>
[](https://github.com/Blazity/nest-file-fastify)
[](https://www.npmjs.com/package/@blazity/nest-file-fastify)
[](https://www.npmjs.com/package/@blazity/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 @blazity/nest-file-fastify fastify-multipart
```
Yarn
```bash
$ yarn add @blazity/nest-file-fastify fastify-multipart
```
## Docs
### Single file
```ts
import { FileInterceptor, UploadedFile, StorageFile } from '@blazity/nest-file-fastify';
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file: StorageFile) {
console.log(file);
}
```
`FileInterceptor` arguments:
- `fieldname`: string - name of the field that holds a file
- `options`: optional object of type [`UploadOptions`](https://github.com/Blazity/nest-file-fastify/blob/master/src/options.ts#L3)
### Array of files
```ts
import { FilesInterceptor, UploadedFiles, StorageFile } from '@blazity/nest-file-fastify';
@Post('upload')
@UseInterceptors(FilesInterceptor('files'))
uploadFile(@UploadedFiles() files: StorageFile[]) {
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`](https://github.com/Blazity/nest-file-fastify/blob/master/src/options.ts#L3)
### Multiple files
```ts
import { FileFieldsInterceptor, UploadedFiles, StorageFile } from '@blazity/nest-file-fastify';
@Post('upload')
@UseInterceptors(FileFieldsInterceptor([
{ name: 'avatar', maxCount: 1 },
{ name: 'background', maxCount: 1 },
]))
uploadFile(@UploadedFiles() files: { avatar?: StorageFile[], background?: StorageFile[] }) {
console.log(files);
}
```
`FileFieldsInterceptor` arguments:
- `uploadFields`: object of type [`UploadField`](https://github.com/Blazity/nest-file-fastify/blob/master/src/interceptors/file-fields-interceptor.ts#L15)
- `options`: optional object of type [`UploadOptions`](https://github.com/Blazity/nest-file-fastify/blob/master/src/options.ts#L3)
### Any files
```ts
import { AnyFilesInterceptor, UploadedFiles, StorageFile } from '@blazity/nest-file-fastify';
@Post('upload')
@UseInterceptors(AnyFilesInterceptor()
uploadFile(@UploadedFiles() files: StorageFile[]) {
console.log(files);
}
```
`AnyFilesInterceptor` arguments:
- `options`: optional object of type [`UploadOptions`](https://github.com/Blazity/nest-file-fastify/blob/master/src/options.ts#L3)