=> 로컬 백엔드에서 aws-sd, multer-s3 설치
npm i aws-sdk multer-s3
route/post.js
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');
AWS.config.update({
region : 'ap-northeast-2',
accessKeyId : '',
secretAccessKey : '',
});
vim .env
(a 누르면 편집 모드)
파일 수정 후
(esc 누르고 :wq 쓰면 저장하면서 나가기)
route/post.js
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');
AWS.config.update({
region : 'ap-northeast-2',
accessKeyId : process.env.S3_ACCESS_KEY_ID,
secretAccessKey : process.env.S3_SECRET_ACCESS_KEY,
});
const upload = multer({
storage : multerS3({
s3 : new AWS.S3(),
bucket : 'rgproject-react',
key(req, file, cb) {
// original 이라는 폴더 안에 파일명 : 날짜+파일명으로 넣기 (파일명 중복 막기)
cb(null, `original/${+new Date()}${path.basename(file.originalname)}`);
},
}),
limits : { fileSize: 20 * 1024 * 1024 },
});
...
router.post('/images', upload.array('image'), (req, res) => {
console.log(req.files)
// req.files의 location에 경로가 들어있음
res.json(req.files.map( v => v.location));
});
S3는 별도의 서버이기 때문에 백엔드 주소와 상관이 없기 때문.