728x90
반응형

파일 업로드를 위한 목록들
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 |