Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

The World of Web

업로드 요청 이미지 파일 저장하기 본문

Web Development/Node.js

업로드 요청 이미지 파일 저장하기

Puzner 2016. 1. 22. 04:33

  시작하기

이번에는 express 4.x 를 이용한 업로드 이미지 저장하기입니다.

javascript로 업로드 요청하기는 다음 포스팅을 참조해주세요~^^


  소스코드

우선 'multer'로 모듈을 설치해주세요.

설치방법은 커맨드 창에서 npm install multer 명령어로 직접 설치하는 방법과 package.json을 이용한 설치가 있습니다.


설치가 끝나셨다면 아래와 같이 multer 미들웨어를 추가해주세요.

var multer = require('multer');
var upload = multer({
    dest: './uploadFolder'
});

여기서 dest는 업로드 파일을 저장할 폴더를 지정하는 거구요. 저 소스코드를 입력한다면 폴더가 없더라도 생성을 직접 해준답니다.


추가가 끝나셨으면 아래 함수를 만들어주시구요

/*이미지 업로드 함수*/
function imageUpload(files) {
    fs.readFile(files.path, function (err, data) {
        var filePath = __dirname + '\\uploadFolder\\' + files.originalname;
        fs.writeFile(filePath, data, function (error) {
            if (error) {
                throw error;
            } else {
                fs.unlink(files.path, function (removeFileErr) {
                    if (removeFileErr) {
                        throw removeFileErr;
                    }
                });
            }
        });
    });
}

이미지 파일이 전송되면 파일 이름이 업로드할 때와의 파일과 달라서 위와 같이 새로 저장한다음 수정하기 전의 파일을 삭제해주는 소스코드입니다.


다음 아래와 같이 POST 처리를 해주시면 됩니다.

/*이미지 업로드*/ app.post('/upload', upload.array('uploadFile'), function (req, res) { var filesLength = req.files.length; var uploadCnt = 0; if (filesLength <= 0) { res.status(500).end(); } else { for (var i = 0; i < filesLength; i++) { imageUpload(req.files[i]); uploadCnt += 1; if (uploadCnt == filesLength) { res.status(200).end(); } } } });

이 부분은 얼마든지 커스터 마이징이 가능한 부분인데요.

저는 업로드 요청이 없을경우와 있을 경우로 나누어서 작성했습니다.


  결과


좀 전에 설정하신 폴더에 이미지가 저장된 것을 보실 수 있습니다.


제가 해 본 방법중에는 이 방법이 가장 쉬운거 같더군요.

혹시 다른 더 좋은 방법이 있으시면 말씀해주세요~ ^^


Comments