ํฐ์คํ ๋ฆฌ ๋ทฐ
7. ํ์ผ ์ ๋ก๋ (multer ๋ชจ๋ ์ด์ฉ)
๋๋์ด๋ฐ๐พ 2018. 5. 26. 15:53ํ์ผ์ ์ ๋ก๋ ํ๋ ์์ ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ์ค์ํ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฒ ์ฑํฐ์์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๋ก๋ ๊ธฐ๋ฅ์ ๊ตฌํ ํด๋ณผ ๊ฒ์ด๋ค.
์ผ๋จ ์์ํ๊ธฐ์ ์์์ multer ๋ชจ๋์ installํด์ค๋ค.
$ npm install --save multer
์ผ๋จ ๊ฐ๋จํ๊ฒ ์ด๋ฌํ form์ ๋ง๋ค์ด์ ์ค์ต์ ํด๋ณด๊ฒ ๋ค.
upload.pug
1 2 3 4 5 6 7 8 9 | doctype html html head meta(charset='utf-8') body form(action='upload' method='post' enctype="multipart/form-data") input(type='file' name='userfile') input(type='submit') | cs |
๋ค๋ฅธ๊ฑด ๋์งธ์น๊ณ form ํ๊ทธ๋ฅผ ๋ณด๋ฉด form ํ๊ทธ์ post ๋ฉ์๋ ์คํ ์์ upload ๋ผ๋ ๋ผ์ฐํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฒ ๋ค๋ ๋ป์ธ๋ฐ ํ์ผ ์ ์ก ์ enctype ๋ถ๋ถ์ ๊ผญ ์์ฑํด์ฃผ์ด์ผ ํ๋ค๊ณ ํ๋ค. ๊ทธ๋ฅ ์์๋ฌ์ผ๊ฒ ๋ค.
์ด์ ํ์ผ์ ์ ์กํ ๋ผ์ฐํฐ์ post๋ ์ ๋ณด๋ฅผ ์ถ๋ ฅํด๋ณด๋ ์ฝ๋๋ฅผ node์์ ์์ฑํด๋ณด๊ฒ ๋ค.
multer ๊ณต์ ์ฌ์ดํธ์ ๊ฐ๋ฉด ๋์์๋ ๊ธฐ๋ณธ ํผ์ด ์๋ค.
var express =var multer =var upload =var app =appappvar cpUpload = uploadapp
multer ๋ณ์์ ๋ชจ๋์ requireํด์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด๋ฐ๊ณ ํด๋น ๋ณ์๋ก ํ์ผ ์ ๋ก๋์ ๊ดํ ์์ ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ multer์ ๊ธฐ๋ณธ ์ค์ ์ ํ๋ ์ฝ๋๋ก
var upload =
๋ฅผ ์์ฑํ์ฌ ํ์ผ์ด ์ ์ฅ๋๋ ๋๋ ํ ๋ฆฌ๋ฅผ uploads๋ผ๋ ๋๋ ํ ๋ฆฌ๋ก ํ๊ฒ ๋ค๊ณ ์ ์ธํด์ค๋ค.(uploads ๋ผ๋ ํด๋๋ฅผ ์์ฑํด์ค์ผ ํ๋ค.)
app
๋ณดํต ์ฐ๋ฆฌ๊ฐ app.post ๋ถ๋ถ์ ์์ฑํ ๋ ๋ผ์ฐํฐ ์ฃผ์์ function ์ด ๋๊ฐ๋ก ์์ฑ๋๋ ๊ฒ์ด ๋๋ถ๋ถ์ด์๋๋ฐ ๋ณด๋ฉด ์ค๊ฐ์ ๋งค๊ฐ๋ณ์ ํ๋๊ฐ ๋ ํฌํจ๋์ด์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. post ๋ฉ์๋๋ฅผ ํตํด ํด๋น ๋ผ์ฐํฐ์ ๋ค์ด์ค๊ฒ ๋๋ฉด function์ด ์คํ๋๊ธฐ ์ ์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ์์ ์ด ๋จผ์ ์คํ๋๊ฒ ๋๋ค.
upload.single('avatar')์์ avatar ๋ผ๊ณ ํ๋ ๊ฒ์ ํผ ์์ฑ ์์ file์ name ๊ฐ์ด๋ค. ๋๋ userfile ์ด๋ผ๊ณ name๊ฐ์ ์์ฑํ์์ผ๋ฏ๋ก userfile์ ์จ์ฃผ๋ฉด ๋๋ค.
์ด๊ฒ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ธ๋ฐ ์กฐ๊ธ ๋ ์ฌํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ด๊ฐ ๋ดค์ ๋๋ ๊ทธ๊ฒ ๋ ํจ์จ์ ์ธ ๊ฒ ๊ฐ์์ ๋ด ์ฝ๋๋ ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํด๋ณด์๋ค.
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | var express = require('express'); var app = express(); var multer = require('multer'); var _storage = multer.diskStorage({ destination: function(req,file,cb) { cb(null,'uploads/') }, filename: function(req,file,cb) { cb(null,file.originalname) } }) var upload = multer({storage: _storage}) //๋ฏธ๋ค์จ์ด ๋ฆฌํด. ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ํ์ผ์ ์ด๋์ ์ ์ฅํ ๊ฒ์ธ์ง ์ค์ app.set('view engine','pug'); app.set('views','./views'); app.use(express.static('public')); app.use('/user',express.static('uploads')); app.get('/upload',function(req,res){ res.render('upload'); }); app.post('/upload',upload.single('userfile'),function(req,res){ res.send('uploaded :'+req.file.originalname); console.log(req.file); }) app.listen(3000, function() { console.log('Connected 3000 port!'); }); | cs |
storage ๋ผ๋ ๋ถ๋ถ์ธ๋ฐ callback ํจ์์ ํ์์ผ๋ก ์ฌ๋ฌ๊ฐ์ง ์ค์ ๋ค์ ํด์ค ์ ์๋ค.
์๊น๋ upload ๋ณ์์ ๋ฐ๋ก upload ํ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐ๋ก ๊ฒฐ์ ํด ์ฃผ์๋ค๋ฉด ์ด๋ฒ์ ๋ณ์ ๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๊ณ ์๋ค.
ํด๋น ๋ณ์ ๊ฐ์ ๋๋ ํ ๋ฆฌ, ํ์ผ์ด๋ฆ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ํ๋ ์กฐ๊ฑด์ผ๋ก ์์ฑ๋๊ฒ ํ ์ ์๋ค.
์ ๋ก๋๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ํ ๋๋ destination ์ด๋ผ๋ ํจ์๋ฅผ ํตํด์ ์ ํด์ง๊ฒ ๋๋๋ฐ uploads๋ผ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํฅํ๋๋ก ํ๋ค.
ํ์ผ ์ด๋ฆ์ filename ์ต์ ์ค์ ํ๋์ธ originalname (์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ํ์ผ๋ช ์ ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ) ์ ์ฌ์ฉํ์ฌ ํ์ผ๋ช ์ ์ ์ฅํ๋๋ก ํ๋ค.
์ด ๋ฐฉ๋ฒ์ ๋ ์ ํธํ๋ ์ด์ ๋ ํ์ผ์ ์๋ฒ๋ก ์ ๋ก๋ ํ ๋ text ํ์ผ์ text ํ์ผ๋๋ก, image ํ์ผ์ image ํ์ผ๋๋ก ๊ฐ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํ์ฌ ์ ๋ก๋ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฅผ๋ค๋ฉด
์ ๊ฐ์ด ์ฌ์ฉ๋ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๊ฒ ์ง๋ง ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ง ์ฐ์ ์ ์ผ๋ก ๋ฐฐ์๋ดค๋ค.
ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ํ์ฉํ ์ผ์ด ์๊ธฐ๋ฉด ๋ ์ฌํ์์ผ์ ๊ณต๋ถ ํด๋ณผ ํ์๊ฐ ์๊ฒ ๋ค.
'Node.js > Node.js ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
8.2 Sequelize ํ๊ฒฝ settingํ๊ธฐ (0) | 2018.06.28 |
---|---|
8.1 Node js ORM ( Sequelize.js ) ์๊ฐ (0) | 2018.06.28 |
6. express ์ฟผ๋ฆฌ์คํธ๋ง ์ฌ์ฉ (0) | 2018.04.25 |
5. ํ ํ๋ฆฟ ์์ง pug (2) | 2018.04.12 |
express(3) - ๋์ ํ์ผ์๋น์ค (0) | 2018.04.06 |
- Total
- Today
- Yesterday
- Spring
- ์๊ณ ๋ฆฌ์ฆ
- NestJS
- ํ๋ก๊ทธ๋๋จธ์ค
- nestjs module
- Request_Limit_Exceeded
- typeorm
- nestjs/cli
- nestjs configService
- ๋น๋๊ธฐ ์์ฒญ
- DeferredResult
- nestjs project
- nestjs directory
- docker mysql
- Promise bulk
- android
- ๊ธฐ์์ฒญAPI
- sequelize
- node.js
- Spring Async
- nestjs config
- typeorm ์ฐ๊ฒฐ
- Promise error
- node.js backend
- backend-framework
- @nestjs/config
- foreignkey
- nestjs typeorm
- JavaScript
- nestjs doc
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |