본문 바로가기

WEB/Node.js

Node.js 파일 업로드 & 다운로드

728x90
반응형

+ Node.js 파일 업로드 & 다운로드 실습 코드 <방명록 제작> 

https://minyeong3.tistory.com/17

 

 

Node.js File up & downlaod

파일 업로드를 위한 목록들

upload 폴더 안에 업로드한 파일들이 저장됨.

index.js

const express = require('express');
const app = express();
const fs = require('fs');

app.set('view engine', 'ejs');

app.use('/', require('./routes/main));

app.listen(8000, function(){
	var dir = './upload';
	if (!fs.existsSync(dir)) fs.mkdirSync(dir);

});

routers/main.js

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

var storage = multer.diskStorage({
	destination(req, file, cb) {
		cb(null, 'upload/');
	},
	filename(req, file, cb) {
		cb(null, '${Date.now()}__${file.originalname}');
	},
});
var upload = multer({ dest: 'upload/' });
var uploadWithOriginalFilename = multer({ storage: storage });

router.get('/', function(req, res){
	res.render('upload');
});

router.post('/uploadFile', upload.single('attachment'), function(req,res){
	res.render('confirm', { file:req.file, files:null });
});


module.exports = router;

views/upload.js

<h1> 1. Single File upload </h1>
<form action="/uploadFile" enctype="multipart/form-data" method="post">
	<input type="file" name="attachment">
	<button type="submit" class="btn btn-primary">Upload</button>
</form>
<hr>

views/confirm.js

<h1> Success! </h1>

<% if(file){ %>
<pre><%=JSON.stringify(file, null, 2)%></pre>
<% }%>

<% if(files){ %>
<pre><%=JSON.stringify(file, null, 2)%></pre>
<% }%>

<a href='/'>Back</a>

<down>

text.txt를 테스트 삼아 다운로드함

app.js

 

routes/download.js

var express = require('express');
var router = express.Router();
const path = require('path');

var appRoot = process.env.PWD;
var uploadPath = path.join(appRoot,"upload");

router.get('/', function(req, res){
	res.render("index");
});

router.get('download', function(req, res){
	const file = '${uploadPath}/test.txt';
	console.log(file);
	res.download(file);
});

module.exports = router;

/views/index.ejs

<html>
	<head><title>
		node study
	<title><head>
	<body>
		<h2> 
			<a href="/download"> file Download </a>
		</h2>
	</body>
</html>
728x90
반응형

'WEB > Node.js' 카테고리의 다른 글

스마트 출석부 구현 (Node.js)  (0) 2023.02.16
Node.js 방명록 제작  (1) 2022.12.26
Node.js와 MySQL 연동 (express 사용)  (0) 2022.12.26
Node.js로 웹페이지 생성(express 사용)  (0) 2022.12.26
Node.js, NPM  (0) 2022.12.26