1.簡介
multer是一個node.js文件上傳中間件,它是在 busboy的基礎上開發的!
multer必須指定 enctype="multipart/form-data".
2.安裝
npm install multer -save
3.使用
1.建立項目
<span style="color:#333333;">E:\nodeTest\multer>npm install multer -save
npm WARN install Refusing to install multer as a dependency of itself</span>
解決方法:修改package.json 裏面的name (隨便改,我改成multer-test)2.建立視圖頁面
//index.ejs
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<% if(typeof(image) !== 'undefined' && image){ %>
<img src="<%=image%>">
<%}else{%>
<form action="/upload" enctype="multipart/form-data" method="POST">
<input type="file" name="image">
<input type="submit" value="上傳">
</form>
<%}%>
</body>
</html>
3.建立路由
//index.js
var express = require('express');
var router = express.Router();
var multer = require('multer')
//設置保存路徑
var upload = multer({ dest: 'uploads/' })
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.post('/upload', upload.single("image"), function(req, res, next) {
//文件路徑
var image=req.file.path;
res.render('index', { title : 'Express' ,image:image});
});
module.exports = router;
4.託管靜態文件
app.use(express.static(path.join(__dirname, 'public')));
再添加一行代碼 path.join(_dirname,'uploads‘) 則爲 e:\nodeTest\multer\uploads
app.use('/uploads',express.static(path.join(__dirname, 'uploads')))
重啓服務,重新上傳圖片。 成功啦!!!5.multer多種上傳
<pre name="code" class="javascript">//單個文件上傳
upload.single("image") //image爲文件name
//獲得文件:req.file
//多個相同name文件上傳
upload.array("image",maxCount) //image爲多個相同文件name ,maxCount則爲最大上傳個數 ,也可以不設置
//獲得文件 req.files
//多個不同name文件上傳
upload.fields([{name:'image',maxCount:'1'},{name:'txt',maxCount:'2'}])
//name 則爲上傳文件name ,maxCount爲該name文件最大上傳個數 ,可以不設置
//獲得文件 req.files.image req.files.txt
multer還有許多功能,總體來說能滿足我們日常需求,想詳細瞭解請看API