개발/NestJs

8. 첨부파일

희묭 2023. 10. 20. 11:48

8. 첨부파일


1) 설치

yarn add @types/multer

2) 활용

multer옵션파일 생성

import { existsSync, mkdirSync } from 'fs';
import * as multer from 'multer';
import { extname } from 'path';

export const multerOptions = {
	// fileFilter: (request, file, callback) => {
	//   if (file.mimetype.match(/\/(jpg|jpeg|png)$/)) {
	//     // 이미지 형식은 jpg, jpeg, png만 허용합니다.
	//     callback(null, true);
	//   }
	// },
	storage: multer.diskStorage({
		destination: (request, file, callback) => {
			const uploadPath = 'uploads';
			if (!existsSync(uploadPath)) {
				// uploads 폴더가 존재하지 않을시, 생성합니다.
				mkdirSync(uploadPath);
			}
			callback(null, uploadPath);
		},
		filename: (request, file, callback) => {
			//파일 이름 설정
			callback(null, `${Date.now()}${extname(file.originalname)}`);
		},
	}),
};

인터셉터에 옵션적용

@Post('upload')
@UseInterceptors(FileInterceptor('file', multerOptions))
uploadFile(@UploadedFile() file: Express.Multer.File) {
	console.log(file);
}