Express를 활용한 File Server 만들기 (multer, post 사용)

2021. 4. 18. 23:37개발/Node.js

반응형

Window Program에서 오류발생시 Log를 자동으로 수집해서 서버에 올리고 싶어져서 간단하게 테스트해 볼 수 있는 코드를 작성했다.

 

파일 업로드의 주체는 툴이될 것이라 간단하게 Python + Requests 로 구현하였다.

 

 

 

간단한 Python 스크립트를 생성해서서Requests를 사용하여 File을 Upload할 수 있도록 해준다.

- text파일을 python script에서 Read 하고 upload dictionary에 넣어둔다. (이때 key 값인 'file' 은 field ID값이 된다.)

- requests.post 을 사용해서 server로 upload 한다.

- response 되는 응답코드에 따라 로직을 처리한다.

 

 

응답코드는 아래 더보기를 클릭해서 쓰윽 훑어보면 된다. 

 

import requests

# PORT 3000에 /upload routing을 할 예정이다.
server = 'http://localhost:3000/upload'

if __name__ == '__main__':
    files = open('./test.txt', 'rb')
    upload = {'file': files}
    try:
        res = requests.post(server, files=upload)
        if res.status_code == 200:
            print("Success!!")
    except Exception as ex:
        print("Except!")

 

 

 

 

 

 

이제 express를 사용해서 간단하고 빠르게 프로젝트를 생성 해준다.

 

1. express --ejs [Project 이름]

2. app.js 에서 port number 지정

3. app.listen 추가

const PORT = 3000;
app.listen(PORT, function(){
  console.log("Server Start PORT : " + PORT);
});

테스트 코드를 작성할때 위 3가지 스텝은 자동으로 해두면 편리하다.

 

 

 

upload를 편리하게 쓰기위해 multer라는 모듈을 사용할 것이므로 미리 다운받는다.

npm install --save multer

 

 

router 폴더의 index.js 를 아래와 같이 수정해준다.

(destination은 서버의 어떤 경로에 저장할지를 명시해주고, filename부분은 파일이름을 어떻게 저장할지를 명시해준다.)

var express = require('express');
var router = express.Router();
var multer = require('multer');
var upload = multer({
  storage: multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, './uploads');
    },
    filename: function (req, file, cb) {
      cb(null, file.originalname);
    }
  })
});

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* POST File Upload */
router.post('/upload', upload.single('file'), function(req, res) {
  res.sendStatus(200);
});

module.exports = router;

 

 

이렇게 해서 node 서버를 구동시키고, python script를 돌려보면 "Success!" 가 print 된다.

 

Client Side인 Python script의 Log

 

Node Server의 Log

 

반응형