반응형
1. 원하는것
file을 업로드하여 저장하고싶다.
2. 검색
검색결과 multer에 대한 추천내용이 많았다.
https://www.npmjs.com/package/multer
3. 적용
사용법에 대한 한글문서
설치
$ npm install --save multer
const multer = require("multer");
//파일저장위치 지정 및 파일용량 조절
const upload = multer({ dest: 'public/uploads/',limits: { fileSize: 5 * 1024 * 1024 }});
app.post('/upload',upload.single('img_file'), function (req, res){
res.send(req.file);
});
결과값
{
"fieldname": "img_file",
"originalname": "27.png",
"encoding": "7bit",
"mimetype": "image/png",
"destination": "public/uploads/",
"filename": "1eba52d1e71008f7ee36b3ddff5710b4",
"path": "public\\uploads\\1eba52d1e71008f7ee36b3ddff5710b4",
"size": 988844
}
4. 추가진행사항
파일을 저장해보니 파일명이 1eba52d1e71008f7ee36b3ddff5710b4 해당형태로 저장이 되어있다. 보안을위해서 이렇게 넣었겠지만
원래이름대로 넣고싶어졌다.
multer의 옵션중 첫번째 옵션은 dest or storage를 이용한다.
위쪽의 예제는 dest를 사용했으나 storage옵션을 사용해서 변경한다.
const path = require('path');
const multer = require("multer");
//const upload = multer({ dest: 'public/uploads/',limits: { fileSize: 5 * 1024 * 1024 }});
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public/uploads/')
},
filename: function (req, file, cb) {
//타임스탬프 + 확장자설정
cb(null, file.fieldname + '-' + Date.now()+ path.extname(file.originalname))
}
})
const upload = multer({
storage : storage
,limits: { fileSize: 5 * 1024 * 1024 }});
5. 추가진행사항2
이미지 파일만 받고싶다.
const path = require('path');
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public/uploads/')
},
filename: function (req, file, cb) {
cb(null, new Date().valueOf() + path.extname(file.originalname))
}
})
const fileFilter = function (req, file, cb) {
let typeArray = file.mimetype.split('/');
let fileType = typeArray[1];
if (fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg' || fileType == 'gif') {
cb(null, true);
} else {
req.fileValidationError = "jpg,jpeg,png,gif 파일만 업로드 가능합니다.";
cb(null, false)
}
}
const upload = multer({
storage: storage,
fileFilter: fileFilter,
limits: {
fileSize: 5 * 1024 * 1024
}
});
반응형
'기타2 > Nodejs' 카테고리의 다른 글
nvm (0) | 2019.11.28 |
---|---|
https://nodejs.org/ (0) | 2019.11.28 |
Express에서 정적 파일 제공 (0) | 2018.08.09 |
cors (0) | 2018.08.09 |
mysql2 (0) | 2018.08.08 |