- 需要引入模块
var Express = require('express');
var multer = require('multer');
var bodyParser = require('body-parser');
- 第一步
var Storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, "./Images");
},
filename: function (req, file, callback) {
callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
}
});
destination:配置文件的上传位置为images
我也不知道这个具体怎么搞得,没百度出来
以及文件名 filename
fieldname 在窗体中指定的字段名 + ‘’ + 时间戳+’’+用户计算机上文件的名称
- 第三步
var upload = multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count
这里multer接受我们在上一步中创建的storage作为参数
接受文件数组长度为3,所有文件名都为imgUploader 。
这个时候前端的文件就会存在我们写的upload 方法中的req.files中
而其他内容存在req.body 中,与body-parser 用法一样(还是有不一样,req.files 存的是数组)
我在使用中遇到的问题
- 使用formData获取表单 内容时候 只能使用原生js的查询例如
let form = document.getElementById("test-form")
- 上传完了之后发现 后台报错 Unexpected field
将前端的 表单 上传文件的input框的name 属性设为imgUploader就行**(意思是前面第三步设置的‘文件名’与input 的name 属性相同即 name = “文件名”)**
<input type="file" name = "imgUploader" accept="image/gif, image/jpeg,image/x-png">
最后附一个:multer 使用的链接:github multer 文件例子