Files
dzone-api/src/modules/uploader/uploader.controller.ts
T
2025-05-21 10:06:29 +03:30

34 lines
1.3 KiB
TypeScript
Executable File

import { FileInterceptor, FilesInterceptor } from "@nest-lab/fastify-multer";
import { Controller, Post, UploadedFile, UploadedFiles, UseInterceptors } from "@nestjs/common";
import { ApiBody, ApiConsumes, ApiOperation, ApiTags } from "@nestjs/swagger";
import { UploadMultipleFileDto, UploadSingleFileDto } from "./DTO/upload-file.dto";
import { UploaderService } from "./uploader.service";
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
import { IFile } from "../utils/interfaces/IFile";
@ApiTags("Uploader")
@Controller("uploader")
@AuthGuards()
export class UploaderController {
constructor(private readonly uploaderService: UploaderService) {}
@ApiOperation({ summary: "Uploads a single file" })
@ApiConsumes("multipart/form-data")
@UseInterceptors(FileInterceptor("file"))
@ApiBody({ type: UploadSingleFileDto })
@Post("single-file")
uploadFile(@UploadedFile() file: IFile) {
return this.uploaderService.upload(file);
}
@ApiOperation({ summary: "Uploads multiple files" })
@ApiConsumes("multipart/form-data")
@UseInterceptors(FilesInterceptor("files"))
@ApiBody({ type: UploadMultipleFileDto })
@Post("multi-file")
uploadFiles(@UploadedFiles() files: IFile[]) {
return this.uploaderService.uploadMultiple(files);
}
}