관리 메뉴

나의 개발일지(김지헌)

항해 99 73일차 11/30일 본문

항해 99

항해 99 73일차 11/30일

코딩이좋아요 2022. 11. 30. 23:58

오늘은 중복된 코드를 통합을 하고 어제 성능 측정을 했던 코드를 실제 우리가 필요한 코드로 바꾼 후 한번더 측정을 해보았다.

기존 라우터 코드 

//userRouter
import { upload } from '../../utils/multer';
router.put('/myPage', authmiddleware, upload.single('profileImg') , User.updateUser);

//reviewRouter
import { uploads } from '../../utils/multer';
//리뷰작성
reviewrouter.post('/:campId/review', authmiddleware, uploads.array('reviewImg',4),reviewController.createReview);
//리뷰수정
reviewrouter.put('/:campId/:reviewId', authmiddleware, uploads.array('reviewImg',4),reviewController.updateReview);
//S3Client 사용
import { S3Client } from '@aws-sdk/client-s3'
import multer from 'multer'
import multerS3 from 'multer-s3'
import dotenv from 'dotenv'
import path from 'path'
import AWS from 'aws-sdk'

dotenv.config()

export const upload = (
  multer({
    storage : multerS3({
      s3: new S3Client({
        credentials:{
          accessKeyId: process.env.S3_ACCESS_KEY!, //방급받은 ACCESSKEY
          secretAccessKey: process.env.S3_SECRET_KEY!//방급받은 SECRETKEY
        },
        region:process.env.S3_KEY_REGION!,//지역
      }),
      bucket: process.env.S3_bUCKET!, //버켓이름
      acl: "public-read", //권한
      contentType: multerS3.AUTO_CONTENT_TYPE,
      key(req, file, cb) {
        const random = Math.floor(Math.random()*10001)
       cb(null, `user/${Date.now()}${random}${path.extname(file.originalname)}`) // original 폴더안에다 파일을 저장
      },
    }),
    limits: { fileSize: 5 * 1024 * 1024 },
  })
)

export const uploads = (
  multer({
    storage : multerS3({
      s3: new S3Client({
        credentials:{
          accessKeyId: process.env.S3_ACCESS_KEY!, //방급받은 ACCESSKEY
          secretAccessKey: process.env.S3_SECRET_KEY!//방급받은 SECRETKEY
        },
        region:process.env.S3_KEY_REGION!,//지역
      }),
      bucket: process.env.S3_bUCKET!, //버켓이름
      acl: "public-read", //권한
      contentType: multerS3.AUTO_CONTENT_TYPE,
      key(req, file, cb) {
        const random = Math.floor(Math.random()*10001)
          cb(null, `review/${Date.now()}${random}${path.extname(file.originalname)}`) // original 폴더안에다 파일을 저장 
        }
      },
    }),
    limits: { fileSize: 5 * 1024 * 1024 },
  })
)

export const deleteFile = (fileDir:string, fileName:string) => {
  try {
    const s3 = new AWS.S3({
      accessKeyId: process.env.S3_ACCESS_KEY!, //방급받은 ACCESSKEY
      secretAccessKey: process.env.S3_SECRET_KEY!,//방급받은 SECRETKEY
    })
      const params = {
        Bucket: process.env.S3_bUCKET!,
        Key: fileDir.concat('/', fileName)
      };
        s3.deleteObject(params, function (err ) {
          if (err) {
            console.log('err: ', err, err.stack);
          } else {
            console.log(`${fileDir}/${fileName} : 정상 삭제 되었습니다.`);
          }    
        })        
      } catch(err) {
        console.log(err);
        throw err;
      }
	}

기존 코드는 upload와 uploads로 구분 지어서 한장만 받을 때와 여러장을 받을 때 코드를 나누어서 작성을 했는데 같은 코드를 두번 나누어서 사용을 하니깐 가독성이 떨어지고 코드가 길어지며 효율이 떨어진다고 생각해서 코드를 구분짓지 않고 하나로 합쳤다.

export const upload = (
  multer({
    storage : multerS3({
      s3: new S3Client({
        credentials:{
          accessKeyId: process.env.S3_ACCESS_KEY!, //방급받은 ACCESSKEY
          secretAccessKey: process.env.S3_SECRET_KEY!//방급받은 SECRETKEY
        },
        region:process.env.S3_KEY_REGION!,//지역
      }),
      bucket: process.env.S3_bUCKET!, //버켓이름
      acl: "public-read", //권한
      contentType: multerS3.AUTO_CONTENT_TYPE,
      key(req, file, cb) {
        const random = Math.floor(Math.random()*10001)
        if(file.fieldname == 'profileImg'){
          cb(null, `user/${Date.now()}${random}${path.extname(file.originalname)}`) // original 폴더안에다 파일을 저장
        }else{
          cb(null, `review/${Date.now()}${random}${path.extname(file.originalname)}`) // original 폴더안에다 파일을 저장 
        }
      },
    }),
    limits: { fileSize: 5 * 1024 * 1024 },
  })
)

프론트에서 파일을 보내줄 때 req.file안에 fieldname이라는 항목에 있는 키 값을 기준으로 if문으로 예외처리를 해서 코드를 바꾸었다.

'항해 99' 카테고리의 다른 글

항해 99 75일차 12/02일  (0) 2022.12.03
항해 99 74일차 12/01일  (0) 2022.12.02
항해 99 72일차 11/29일  (0) 2022.11.30
항해 99 71일차 11/28일  (0) 2022.11.28
항해 99 70일차 11/27일  (0) 2022.11.27