앗.. 아아...

 

프로젝트 중 Ai 기능이 있어 외부와 연계해서 작업을 해야했다.

서버pc에 있는 이미지에 접근해 해당 이미지를 추론하고 추론 이미지 생성 & 추론 data를 DB에 담아주면

나는 이미지랑 data를 가져다 쓰는 방식으로 진행했다.

  

난 파일에 접근 가능하니까 업로드도 가능한줄 알았다 (웨 그렇게 생각하셨죠?? -> 나도 모름, 진짜 모름)

기존에 사용하는 이미지가 많아 서버 PC에 이미지를 저장하고 외부에서 접근 가능하게 해놓은 상태여서

(port & 포트포워딩)

 

외부 인력와서 추론 알고리즘 pc에 설치해줄때도 파일 시스템에 접근이 되는 거니까 업로드도 가능한건가 보다~ 하고 할일 하고 있었다 

 

아래는 예시 백엔드 코드

const express = require('express');
const path = require('path');
const cors = require('cors');

const app = express();
const PORT = 3000;

// CORS 설정: 모든 도메인 허용, GET과 POST 메서드만 허용
app.use(cors({
    methods: ['GET', 'POST']
}));

app.use(express.json());

// 'public/image' 폴더 경로 설정
const folderPath = path.join(__dirname, 'public', 'image');

// 정적 파일 제공
app.use('/images', express.static(folderPath));

// 서버 시작
app.listen(PORT, () => {
    console.log(`이미지 server 실행`);
});

 

근데 작업하시다가 음 405 에러 나는데 왜그러징.. 하는걸 한참 뒤에 들었다 서로 다른 공간에서 작업하니까 작업하는 분은 본인이 잘못해서 그런갑다 하고 이것저것 해보고있었는데 공유한 url로 파일 시스템에 접근해서 이미지 다운로드는 되는데 업로드가 안되니까 본인이 잘못 한건줄 알고 계속 시도해보고 있었던것.. (안타깝게도 외부 인력도 나도 주니어여서 귀책사유를 명확히 알지 못했음)

 

결론부터 말하면 왜 안됐냐면...

 

그야.....

 

업로드 api가 없으니 업로드가 안되지!!

 

정말 부끄러운 이유로 에러가 나고있었고 "405 에러 나는데용?" 라는 말을 듣고 GPT 답변을 이것저것 읽어보고 생각했다.

(와 나 뭐함..?)  

 

호다닥 GPT 도움을 받아 코드를 수정했고 다행히 바로 업로드가 됐다

예시 코드

const multer = require('multer');

// multer 설정: 파일 저장 경로 및 파일 이름 설정
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, YOUR/PATH); // YOUR/PATH 에 업로드 할 경로 입력
    },
    filename: (req, file, cb) => {
        cb(null, file.originalname); // 원래 파일 이름으로 저장
    }
});

const upload = multer({ storage: storage });

// 파일 업로드 api를 만들어줘야 업로드가 되는 지극히 당연한 사실!!
app.post('/api/upload', upload.single('file'), (req, res) => {
    if (!req.file) {
        return res.status(400).json({ message: '파일이 업로드되지 않았습니다.' });
    }
    res.json({
        message: '파일이 성공적으로 업로드되었습니다.',
        file: req.file
    });
});

 

multer 분명 공부할때 썼었는데..

 

경험해보지 않으면 실전에선 절대 생각이 안나는듯..?

*multer는 주로 파일 업로드에 사용하고 미들웨어로 에러 같은거 나면 next에 처리를 위임해줘서 사용하기 좋다

 

회사에서 진행하는 프로젝트가 1인 프로젝트 치고 규모도 좀 있고 경력도 거의 프론트만 1년 정도 한게 다여서 나름 부담감에  MongoDB 강의도 듣고 React deep dive 도 하고 코테도 깔짝깔짝 풀고 있었는데 이번 일 겪은 후로 다 치우고 백엔드 위주로 사이드 프로젝트 하면서 공부 중이다..

 

이것저것 하고있긴한데 교류하고있는 개발자 커뮤니티가 없으니 가끔 헤매고 있는거 같아 좀 불안허네

 

뭐 다들 화이팅합시다~🙌

'Node.js' 카테고리의 다른 글

백엔드 시작하기  (4) 2024.10.26

+ Recent posts