34 lines
1.3 KiB
TypeScript
Executable File
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);
|
|
}
|
|
}
|