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 된다.
'개발 > Node.js' 카테고리의 다른 글
node.js + socket.io 에서 일정시간 이후 socket closed 되는 문제 (0) | 2021.08.10 |
---|---|
[Node.js] https 서버 생성 (0) | 2017.11.16 |
[Node.JS] Express 에서 cookie 사용 (0) | 2017.09.21 |
[Node.js] Express Framework에서 textarea + DB 연동시 줄바꿈 해결방법 (0) | 2017.09.14 |
[Node.js] Framework 비교 자료 (0) | 2017.09.13 |