궤도
[백엔드] React Native에서 Node.js로 이미지 보내기(feat. multer) 본문
오늘은 프론트(react native)로부터 이미지를 받아와 저장할 것이다.
이렇게 찍히는 이미지들을 저장해야 하는 것인데...열심히 검색을 해보았다.
[JS]React에서 Express로 이미지 파일 올리기(multer)
페이스북과 인스타그램과 같은 SNS는 물론 지금 사용하는 블로그부터 왠만한 웹 서비스는 이미지 업로드를 지원합니다. front-end에서 React를 사용하여 Express 서버로 이미지를 전송하는 방법에 대
krpeppermint100.medium.com
[사이드 프로젝트] multer를 이용한 이미지 업로드 feat.React x Node js
요즘 코드스테이츠 부트캠프에서의 빡센 일정과 학습량 덕에 정신없는 나날들을 보내고 있지만, 하루의 남는 시간들을 최대한 활용하여, 만들었던 사이드 프로젝트의 기능들을 보완하고 개선
velog.io
React Native 파일 업로드 예제
React Native에서는 Axios를 활용하여 Node.js 서버로 파일을 전송할 수 있다. 일단 Server에 아래와 같이 파일 업로드를 위한 페이지를 생성한다. Clien가 /api/upload 페이지에 post 메시지를 uploadMiddleware,..
mfact12.tistory.com
[Node.js] Using multer to upload image
이 페이지는 multer를 이용한 이미지 업로드 및 폼데이터 처리방식을 설명하고 있다. (* 아래 코드는 React.js와 Node.js 언어로 구현되어있다) # 설치 express와 함께 사용할 multer 모듈을 설치한다. npm ins
kkumalog.tistory.com
m.blog.naver.com/sssang97/221642022702
[Express.js] Multer 모듈과 파일 업로드
multipart 포맷이라고 파일을 서버로 보낼 때 만드는 표준이 있는데, 이 방법을 사용할 것이다.멀티파트 ...
blog.naver.com
multer라는 미들웨어를 쓰는 것 같다. 시작해보자
npm i multer --save
설치를 하구
routes/paper-upload.js
import express from "express";
const router = express.Router();
const multer = require("multer");
// multer-optional
var storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "uploads/");
},
filename: (req, file, cb) => {
cb(null, `${Date.now()}_${file.originalname}`);
},
});
var upload = multer({ storage: storage });
// Router
router.post("/", upload.array('채점'), (req, res) => {
try {
res.send({ //파일 정보 넘김
message: "upload success",
status: 'success',
data: {
files: req.files
}
});
} catch (err) { //무언가 문제가 생김
res.send({
message: "ERROR",
status: 'fail'
})
}
});
module.exports = router;
여러 블로그에 있는 코드들을 대충 이해해서 짜깁기 해봤다...
multer를 안지 2시간밖에 안돼서 잘은 모르겠으나 내가 이해한 걸 대충 정리해보겠다.
destination: (req, file, cb) => {
cb(null, "uploads/");
}
이건 저장경로를 지정하는거라고 한다.
그니까 uploads란 폴더를 생성하고 거기에 파일이 저장되게끔 하는 것이다.
filename: (req, file, cb) => {
cb(null, `${Date.now()}_${file.originalname}`);
}
이거는 파일이름을 지정하는 건데, 프론트랑 이야기를 좀 해봐야할 것 같다.
지금은 '현재시각_파일의원래이름'으로 저장되도록 했다.
router.post("/", upload.array('채점'), (req, res) => {
try {
res.send({ //파일 정보 넘김
message: "upload success",
status: 'success',
data: {
files: req.files
}
});
} catch (err) { //무언가 문제가 생김
res.send({
message: "ERROR",
status: 'fail'
})
}
});
이미지 업로드는 post로 진행되는데 여러 장의 이미지를 받을 것이기 때문에 upload.array로 작성했다.
하나만 받는다면 upload.single로 하라고 하더이다.
일단 대충 이렇게 해놓았는데, 프론트에서 문제없이 작동하면 좋겠다.
만약 문제가 생기면 추가로 이 아래 글을 더 쓰도록 하겠다.