1、首先安装multer,命令:
npm install express multer
2、在路由文件(此处操作以已经搭建好的express项目为例,详见“Express脚手架generator快速搭建项目”)中引入multer模块,并设置上传路径:
var multer = require('multer');
var upload = multer({dest:'upload/'})
这里注意了:这样设置,如果没有upload文件夹,则会自动创建。为什么要注意这一点,下面会说到。
3、上传接口
router.post('/upload', upload.single('myfile'), function(req, res, next){
//console.log(req);
res.send({ret_code: '0'});
});
4、html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="myfile" value="" />
<input type="submit" value="上传"/>
</form>
</body>
</html>
此时就完成了上传文件的基本操作。
上传测试:
![](https://img.haomeiwen.com/i12375311/a4900d3fb937b54b.png)
此时发现文件(我用的是jpg图片)没有后缀名,这特么不是操蛋么,于是只能找度娘嘿嘿嘿了一下。
解决方法:
在multer对象下设置diskStorage
把步骤2的
var upload = multer({dest:'upload/'});
替换为:
var storage = multer.diskStorage({
//设置上传后文件路径,uploads文件夹需要手动创建!!!
destination: function (req, file, cb) {
cb(null, './public/uploads')
},
//给上传文件重命名,获取添加后缀名
filename: function (req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
//添加配置文件到muler对象。
var upload = multer({
storage: storage
});
这样设置uploads文件夹作为上传路径时,需要手动在public内创建uploads。若没有uploads文件夹,浏览器报错" Not found No such file or directory, open ...."
这里有人说没有uploads也能自动创建(我的反正是报错了)
修改完成之后,测试上传:
![](https://img.haomeiwen.com/i12375311/7c95139fb35cac56.png)
完美达到预期目标。
对你有帮助的话,点个喜欢吧!
<button onclick="alert('I like U')">喜欢</button>
网友评论