티스토리 뷰
프로젝트에서 suneditor를 사용중인데 이미지 업로드를 구현할 일이 생겼다. 그래서 multer를 이용하여 이미지 업로드를 구현했는데 이 부분은 구글에 찾아봐도 잘 안 나와서 혼자 해결해서 누군가도 헤맬 것 같아 여기에 정리해둔다.
MulterModule 설정
@Module ({
imports: [
MulterModule. register({
storage: diskStorage({
destination: '/public/uploads', // public 하위의 uploads 폴더에 이미지가 저장됨.
filename: (req, file, callback) => {
const uniqueSuffix = Date.now() + '-' + Math. round (Math. random) * 1€9);
const ext = extname (file.originalname) ;
callback(null, ${uniquesuffix}${ext});
},
}),
}),
],
controllers: [UploadController],
providers: [UploadService],
})
export class UploadModule {}
에디터 설정
imageUploadUrl: 'http://Localhost:3000/images/upload' // 이미지 업로드 기능이 구현된 엔드포인트 지정
Controller 설정
@Controller()
export class UploadController {
@Post ('/images/upload')
@UseInterceptors (FileInterceptor ('file-0'))
uploadImage(@UploadedFile() file: Express.Multer.File, @Res() response: Response) {
// 이미지 업로드 응답 결과는 아래와 같은 규격.
// 다른 규격일 경우 오류 발생.
const imageInfo = {
result: [
{
name: file.filename,
size: file.size,
url: `http://localhost:3000/uploads/${file.filename}`,
},
],
};
return response.status(HttpStatus.OK).json(imageInfo); // 무조건 200으로 나가야 한다. 아니면 예외로 잡는다.
}
300x250
'업무 경험 및 성과 > 서비스 설계부터 오픈까지' 카테고리의 다른 글
관제용 EC2와 서비스용 EC2끼리 https 통신하도록 만들기 (0) | 2024.08.15 |
---|---|
서버 분리하면서 눈치채지 못하게 서버갈아끼우기(AWS ALB 특정 경로만 다른 서버로 호스팅하기) (0) | 2024.08.01 |
AWS RDS에서 Unable to connect to the database(lock)이 발생했다! (0) | 2024.07.30 |
AWS에 상용 서버 구축하기까지의 과정 (0) | 2024.07.13 |
Redis를 사용할 것인가 말 것인가 하는 고민 (0) | 2024.07.01 |