Node.js
[Node.js] multer로 이미지 업로드 하고 sharp로 리사이징 해주기
오늘보다 더 나은 내일을 위해
2020. 11. 27. 16:10
multer로 업로드된 이미지를 리사이징 해주는 방법에 대해 알아보겠습니다
multer에 대한 설명은 이전 게시물에도 해두었으니 설명은 생략하겠습니다
먼저 이미지 리사이징을 위한 sharp모듈과 원본파일을 삭제해주기 위한 fs모듈을 설치해줍니다
npm install --save sharp
npm install --save fs
const sharp = require('sharp')
const fs = require('fs')
const multer = require('multer')
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/')
},
filename: (req, file, cb) => {
let newFileName = new Date().valueOf() + path.extname(file.originalname)
cb(null, newFileName)
},
})
router.post('/upload', upload.single('img'), (req, res, next)=>{
try{
sharp(req.file.path) // 리사이징할 파일의 경로
.resize({width:640}) // 원본 비율 유지하면서 width 크기만 설정
.withMetadata()
.toFile('[리사이징된 파일이 저장될 경로/파일이름]', (err, info)=>{
if(err) throw err
console.log(`info : ${info}`)
fs.unlink('[삭제할 파일의 경로]', (err)=>{
// 원본파일은 삭제해줍니다
// 원본파일을 삭제하지 않을거면 생략해줍니다
if(err) throw err
})
})
}catch(err){
console.log(err)
}
})
리사이징 후 결과 객체
info : {
format: 'jpeg',
width: 640,
height: 1138,
channels: 3,
premultiplied: false,
size: 88546
}