작성
·
1.1K
답변 1
1
multer로 사용해서 서버에 이미지를 저장하는 경우에는 이런 방식으로 하면 되요:
const express = require('express');
const fs = require('fs');
const app = express();
const path = require('path');
// 관리자 확인 미들웨어
function isAdmin(req, res, next) {
// 이 함수는 예시로, 실제로는 사용자가 관리자인지 확인하는 로직이 들어가야 합니다.
const user = getUserFromRequest(req); // 구현 필요
if (user.isAdmin) {
next();
} else {
res.status(403).send('Forbidden');
}
}
app.get('/images/:uuid', isAdmin, (req, res) => {
const uuid = req.params.uuid;
const imagePath = path.join(__dirname, 'uploads', uuid);
// 파일이 존재하는지 확인
if (fs.existsSync(imagePath)) {
res.sendFile(imagePath);
} else {
res.status(404).send('File not found');
}
});
만약 강의 차후에 나오는 S3 같은 외부 저장소에 이미지를 저장할 경우에는 방법이 좀 다릅니다. AWS signedUrl 생성으로 클라이언트가 서버를 거치지 않고 S3에 바로 이미지 업로드 하는 방법을 배우게 되는데요. 비슷한 방식으로 GET (읽기) 전용 signedUrl을 생성받을 수 있습니다. 이렇게 하면 권한이 부여된 유저만 이미지를 확인할 수 있게 되요