import { Controller, Post, UploadedFile, UseGuards, UseInterceptors, } from '@nestjs/common'; import { FileInterceptor } from '@nestjs/platform-express'; import { ApiBearerAuth, ApiBody, ApiConsumes, ApiTags } from '@nestjs/swagger'; import { AuthGuard } from '@nestjs/passport'; import { FilesS3Service } from './files.service'; @ApiTags('Files') @Controller({ path: 'files', version: '1', }) export class FilesS3Controller { constructor(private readonly filesService: FilesS3Service) {} @ApiBearerAuth() @UseGuards(AuthGuard('jwt')) @Post('upload') @ApiConsumes('multipart/form-data') @ApiBody({ schema: { type: 'object', properties: { file: { type: 'string', format: 'binary', }, }, }, }) @UseInterceptors(FileInterceptor('file')) async uploadFile(@UploadedFile() file: Express.MulterS3.File) { return this.filesService.create(file); } }