2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

node.js + multer 를 이용한 파일 업로드 기능 구현 by 생활코딩

간단하게 파일을 input으로 입력받아서 전송하면 multer 모듈을 이용해서 특정폴더에 저장하고 그 파일을
서비스 할 수 있게 하는 기능을 구현.


필히 multer 모듈을 설치해야 함.
커멘드 창 열고 프로젝트 폴더에서 다음 명령을 실행해서 설치 가능.

npm install --save multer

[소스코드 : app_file.js (일부내용 생략)]

// 익스프레스 설정
var express = require('express');
var app = express();
// POST 전송을 위한 body-parser 설정 -> bodyParser의 Install 이 먼저 선행되어야 함 (npm install --save bodyparser)
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:false}));
// 파일업로드 처리를 위한 multer 및 폴더 설정 -> multer 모듈 인스톨 필요 (npm install --save multer)
var multer = require('multer');
var _storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, 'uploads/');
// 콜백함수를 사용해서 다음과 같이 파일형식이나 확장자에 따라서 저장폴더를 나누는 것이 가능
// if (file==img) {cb(null, 'uploads/img');} else if (file==txt) {cb(null, 'uploads/txt');}
},
filename: function(req, file, cb){
cb(null, file.originalname);
}
});
var upload = multer({ storage:_storage });
// 파일 업로드 페이지
app.get('/upload', function(req, res){
res.render('upload');
});
// 파일 업로드 버튼 눌렀을 때 처리(미들웨어로 파일을 HTTP헤더에 포함해서 처리 with 파일태그 이름 userfile)
app.post('/upload', upload.single('userfile'), function(req, res){
console.log(req.file);
res.send('uploaded success!' + req.file.filename);
});
// 업로드 된 파일을 정적컨텐츠로 유저에게 서비스 가능하게 함
app.use('/user', express.static('uploads'));

[뷰 파일 : /views_file/upload.ejs]

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2><a href="">File upload with Multer</a></h2>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" />
<input type="submit" />
</form>
</body>
</html>


[POST로 전송한 파일의 세부정보]

{ fieldname: 'userfile',

  originalname: 'dreampharos_logo.png',

  encoding: '7bit',

  mimetype: 'image/png',

  destination: 'uploads/',

  filename: 'eb297b785ee1f96391a43a9b668c7024',

  path: 'uploads\\eb297b785ee1f96391a43a9b668c7024',

  size: 42812 }

{ fieldname: 'userfile',

  originalname: 'dreampharos_logo.png',

  encoding: '7bit',

  mimetype: 'image/png',

  destination: 'uploads/',

  filename: 'f818f546a999487a2a1296caf78e640e',

  path: 'uploads\\f818f546a999487a2a1296caf78e640e',

  size: 42812 }

[참고] 파일 업로드 (생활코딩)
[참조] 파일업로드3 - multer의 기본사용법 예제
  

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[react-native] uuid 생성이 에러가 날 때 대처법