-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
node js를 이용하고 mysql에 이미지 경로 저장
23.07.13 14:26 작성 조회수 747
2
nodejs, multer를 통해서 이미지를 업로드했습니다
db에 해당 파일명uuid()를 통해서 저장을 했는데
이미지 주소복사 해서 검색해서 들어가면 이미지가 나오는데
검색해도 못들어가게 하려면 어떻게해야하나요? 또는 관리자만 들어갈수있게하려는데 방법이 있을까요
답변을 작성해보세요.
1
김시훈
지식공유자2023.07.14
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을 생성받을 수 있습니다. 이렇게 하면 권한이 부여된 유저만 이미지를 확인할 수 있게 되요
답변 1