본문 바로가기

About_Node.js

[node.js]파일업로드 - multer

설치법 및 자세한 사용방법은 여기에 다 나와있다

https://www.npmjs.com/package/multer



간단하게 적용해본다면


var express = require('express')
,    multer = require('multer')
,    router = express.Router();

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './public/uploadImg/')      //원하는 저장경로를 잡으면 된다.
    },
    filename: function (req, file, cb) {
        cb(null, Date.now() + "_" + file.originalname)    //원하는 파일명을 셋팅하면 된다.
  }
});
var upload = multer({ storage: storage });

router.post('/imgUpload', upload.single('필드 명'), function(req,res){
	res.json({'filename' : req.file.filename});
});

필드명은 http://rimshot.tistory.com/3의 예제같은 경우 photoUP을 넣어주면 된다.

.single(fieldname) 말그대로 파일 하나만 넘어왔을때 사용하는 것이고

다중파일 선택 시에는 .array(fieldname[, maxCount])를 사용해야한다.

위 예제에서는 마지막에 셋팅한 파일명을 json형태로 클라이언트에 넘겨준다.


**만약 실행이 안될 시는 express 4이상 버전일것이다. 4버전부터는 전에는 기본적이였던 몇몇 모듈들을 수동으로 설치해야한다. 그중에 connect-busboy가 있는데 이게 없어서 실행이 안됐을 수도 있다. (https://www.npmjs.com/package/connect-busboy)

connect-busboy 설치후에 간단히 app.js 셋팅해주면 된다.


*app.js

var busboy = require('connect-busboy');
app.use(busboy());


package.json의 dependencies에 추가해줘야한다는 것도 잊지말자.