node js를 이용하고 mysql에 이미지 경로 저장
1258
投稿した質問数 8
nodejs, multer를 통해서 이미지를 업로드했습니다
db에 해당 파일명uuid()를 통해서 저장을 했는데
이미지 주소복사 해서 검색해서 들어가면 이미지가 나오는데
검색해도 못들어가게 하려면 어떻게해야하나요? 또는 관리자만 들어갈수있게하려는데 방법이 있을까요
回答 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을 생성받을 수 있습니다. 이렇게 하면 권한이 부여된 유저만 이미지를 확인할 수 있게 되요
Router.use 두번째 파라미터 ImageRouter : undefined 전달 오류
0
107
2
소스코드 요청
0
153
1
프록시 관련 질문
0
151
1
Presigned URL 사용시 데이터베이스 저장 시점
0
322
1
이미지 등록시 자동 등록 오류
0
211
1
강의에 사용된 코드 다운 받는 사이트 주소 있나요?
0
373
2
axios 이용해서 백엔드로 이미지 전송 중 새로고침
0
471
1
ImageList 컴포넌트에서 업로드 한 사진을 리스트에서 바로 보기 위해 이 방법도 괜찮나요??
0
377
1
이미지 처음 올릴 때만 나타나는 오류
0
250
1
es6 스타일로 Import 할때 동작하지 않습니다.
0
382
1
이미지 업로드시
0
359
1
선생님 cloudFront를 사용하게되면 S3는 private으로 사용하는게 좋을까요
0
539
1
선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.
0
663
1
new aws.S3 version 확인
2
506
1
react-router-dom v6 useHistory 이슈
7
636
0
람다에서 시간 초과 에러가 뜹니다!
0
315
1
첫 로드시 동일한 이미지 두번호출
2
485
1
이미지 업로드 시 배열로
2
524
1
Promise.all에 대한 질문
0
421
1
세션에 관한 질문이 있습니다.
0
428
1
Promise.all관련 질문 ("여러 이미지 미리보기" 중...)
0
303
1
cdn 주소
0
502
1
특정 user 페이지 가져오기 질문있습니다.
0
289
1
mime-types에서 jpg타입 저장이 안됩니다.
0
414
2

