강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dramayeong8278
dramayeong8278

câu hỏi đã được viết

Quản lý hình ảnh toàn bộ (feat. Node.js, React, MongoDB, AWS)

Cuối cùng lưu trữ thông tin hình ảnh trong cơ sở dữ liệu

node js를 이용하고 mysql에 이미지 경로 저장

Viết

·

1.3K

2

 

nodejs, multer를 통해서 이미지를 업로드했습니다

db에 해당 파일명uuid()를 통해서 저장을 했는데

이미지 주소복사 해서 검색해서 들어가면 이미지가 나오는데

검색해도 못들어가게 하려면 어떻게해야하나요? 또는 관리자만 들어갈수있게하려는데 방법이 있을까요

reactnode.jsawsmongodbexpresslambda

Câu trả lời 1

1

sihoon님의 프로필 이미지
sihoon
Người chia sẻ kiến thức

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을 생성받을 수 있습니다. 이렇게 하면 권한이 부여된 유저만 이미지를 확인할 수 있게 되요

Hình ảnh hồ sơ của dramayeong8278
dramayeong8278

câu hỏi đã được viết

Đặt câu hỏi