1、安装
cnpm install multer --save
2、引入
var multer=require('multer');
var fs=require('fs');
3、配置
let upload= multer({dest:"./public/upload"}); 上传图片路径
4、上传单个文件
router.post('/',upload.single('表单input的name值'),(req,res,next)=>{
//req.file为上传文件相关信息,上传文件后,文件的名称变成随机值无后缀名,所以要还原成以前的名字
let oldpath=req.file.destination+'/'+req.file.filename;
let newpath=req.file.destination+'/'+req.file.originalname;
fs.rename(oldpath,newpath,()=>{
console.log('重命名成功'+newpath);
})
//成功预览
res.send(`<h1>上传成功</h1><img src="./upload/${req.file.originalname}"/>`);
})
5、修改表单的enctype="multipart/form-data"
定义上传类型为文件类型
multer使用limits配置信息
文件上传类型信息
代码示例:
表单ejs:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>图片上传</h1>
<!-- 需修改enctype="multipart/form-data" 定义上传类型为文件类型 -->
<form action="/users" method="post" enctype="multipart/form-data">
<input type="file" name='imgfile'>
<button type='submit'>上传</button>
</form>
</body>
</html>
路由:
ar express = require('express');
var router = express.Router();
var multer=require('multer');
var fs=require('fs');
//配置上传对象
let upload= multer({dest:"./public/upload"})
/* GET users listing. */
router.get('/', function(req, res, next) {
res.render('upload.ejs');
});
//upload.single('input的name值'); 上传单个文件
router.post('/',upload.single('imgfile'),(req,res,next)=>{
//req.file为上传文件相关信息,上传文件后,文件的名称变成随机值无后缀名,所以要还原成以前的名字
console.log(req.file);
let oldpath=req.file.destination+'/'+req.file.filename;
let newpath=req.file.destination+'/'+req.file.originalname;
fs.rename(oldpath,newpath,()=>{
console.log('重命名成功'+newpath);
})
//成功预览
res.send(`<h1>上传成功</h1><img src="./upload/${req.file.originalname}"/>`);
})
module.exports = router;
上传多个文件: