Express Multer는 Node.js의 웹 프레임워크인 Express에서 파일 업로드를 쉽게 처리하기 위해 사용되는 미들웨어(Middleware)입니다. Multer는 멀티파트(form-data) 형식으로 전송된 파일을 처리하고 업로드할 때 유용한 기능들을 제공합니다.
Express Multer의 주요 목적:
Express Multer의 주요 목적은 클라이언트에서 서버로 파일을 업로드하는 요청을 처리하는 것입니다. 파일 업로드는 기본적으로 HTTP POST 요청과 멀티파트(form-data) 형식으로 파일 데이터를 전송합니다. Multer는 이러한 파일 데이터를 읽고 파싱하여 서버로 전달하는 일을 담당합니다.
Express Multer의 내부 작동 원리:
Multer는 내부적으로 Busboy 라이브러리를 기반으로 동작합니다. Busboy는 Node.js의 스트림을 사용하여 멀티파트 요청을 처리하는 데 사용되는 라이브러리로, 데이터를 조각조각으로 읽고 처리하는 데 매우 효율적입니다.
req.file
을 통해 업로드된 파일에 접근할 수 있게 됩니다.req.file
을 사용하여 업로드된 파일을 원하는 대로 처리하거나 저장할 수 있습니다.Express Multer 사용 예시:
아래는 Express Multer를 사용하여 파일 업로드를 처리하는 간단한 예제입니다.
const express = require('express');
const multer = require('multer');
const app = express();
// 파일을 임시 디렉토리에 저장하기 위한 Multer 미들웨어 설정
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now());
},
});
// multer 미들웨어 생성
const upload = multer({ storage: storage });
// 파일 업로드 처리 라우터
app.post('/upload', upload.single('file'), (req, res) => {
// 업로드된 파일 정보는 req.file을 통해 접근 가능
console.log(req.file);
res.send('파일 업로드 성공!');
});
app.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행중입니다.');
});
위 예제에서 upload.single('file')
미들웨어는 하나의 파일만 업로드하는 경우를 처리합니다. 파일은 'uploads/' 디렉토리에 임시로 저장되며, 업로드된 파일 정보는 req.file
을 통해 접근할 수 있습니다. 이렇게 간단히 Express Multer를 사용하여 파일 업로드 기능을 구현할 수 있습니다.
정말 잘 읽었습니다, 고맙습니다!