How to set up Multer

2021. 3. 4. 10:48·BootCamp_Codestates/TILookCloser

Sequelize(ORM)을 이용해 CRUD API를 만들었다.

검색 기능이 특히 어려웠는데, 페이지네이션과 검색어에 따른 API 예외처리를 만들어주는게
쉽지 않았다.

로컬에서 완벽하다 생각해서, AWS EC2에 배포하면 다른 오류가 생기고.. 다시 고치고 배포하고..
반복했다.

Multer s3를 이용한 s3업로드와 업로드 된 파일의 url을 DB에 저장하는 작업도 쉽지 않았다.

 

Multer

라이브러리

const multer = require('multer');
const path = require('path');
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');
const dotenv = require('dotenv');
dotenv.config();

 

AWS S3셋팅
이미지 업로드 전용 S3 버킷을 만들었는데, key를 발급받을 수 있다.
key 파일을 확인해보면 accesskey, secreatAccessKey를 얻을 수 있다.

AWS.config.update({
  accessKeyId: process.env.S3_ACCESS_KEY_ID,
  secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
  region: 'ap-northeast-2',
});

파일명, 버킷 설정

파일 최대 크기는 :5mb,
파일명은 key에서 업로드 날짜로 지정해주었다.

const upload = multer({
  storage: multerS3({
    s3: new AWS.S3(),
    bucket: 'S3 이미지 버킷명',
    key: function (req, file, cb) {
      let extension = path.extname(file.originalname);
      cb(null, Date.now().toString() + extension);
    },
  }),
  limits: { fieldSize: 5 * 1024 * 1024 },
});

S3에 업로드
여러장을 업로드하기에 upload.array로 했다

upload.array 안의 imgs는 클라이언트 폼데이터 전송부의 name과 같아야하고,
20은 파일 업로드 최대 수를 의미한다.

업로드 뒤의 콜백 에서 req.files로 업로드된 사진들의 경로와, 파일명, 기타 정보를 얻을 수 있다.

app.post('/image', upload.array('imgs', 20), function (req, res) {
  console.log(req.files)
}

 

 

출처: velog.io/@yesparrot/TIL-02.10

참고할 내용: zamezzz.tistory.com/299

'BootCamp_Codestates > TILookCloser' 카테고리의 다른 글

Git 명령어  (0) 2021.03.01
Node.js  (0) 2021.01.28
dotenv 환경변수 사용하기  (0) 2021.01.28
HA. 구현 프로세스 정리(초기 설정)  (0) 2021.01.25
'BootCamp_Codestates/TILookCloser' 카테고리의 다른 글
  • Git 명령어
  • Node.js
  • dotenv 환경변수 사용하기
  • HA. 구현 프로세스 정리(초기 설정)
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;) N
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • Next.js
        • Flutter
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test N
        • LeetCode N
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    커리어
    structure of os
    딥다이브
    leetcode
    스코프
    프론트엔드 성능 최적화 가이드
    DOM
    모던 자바스크립트 Deep Dive
    database
    Data Structure
    자바스크립트
    How memory manage data
    CPU scheduling algorithm
    JavaScript
    mobile app
    js pattern
    Operating System
    자바스크립트 딥다이브
    polylingo
    Threads and Multithreading
    이벤트
    Shared resources
    Time complexity and Space complexity
    need a database
    Network
    Binary Tree BFS
    VoiceJournal
    TCP/IP
    indie hacker
    testing
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
How to set up Multer
상단으로

티스토리툴바