在使用from表单提交数据时,我们一般只能提交一些基本的文字数据,当我们想把一些文件(比如:图片)数据提交到后台时,我就要使用express中multer这个中间件
在使用这个中间件时,我要首先要安装开发环境
npm install --save multer
注: 要在使用express框架的情况才能使用这个中间件
下面是使用 multer 基本配置
前端页面
<input type="file" name="logo" class="logo" >
前端页面的js
$('.logo').change(function(){
var formData = new FormData(); // 新建一个 formdata对象
formData.append('filesa',$(this)[0].files[0]); // 往formdata 中添加数据
$.ajax({
type:'post',
data:formData,
dataType: 'JSON',
url:'/profile',
// 设置兼容 让ajax在提交数据 时 不解析这个data
processData: false,
contentType: false,
success(data){
console.log(data);
}
})
});
index.js(入口js文件)
const express = require('express');
const app = express();
const multer = require('multer');
router.js(路由js文件)
const express = require('express');
const router = express.Router();
const service = require('./service');
const multer = require('multer');
var storage = multer.diskStorage({
//表示图片上传后将保存的路径地址
//设置上传文件路径后,uploads文件夹将会在服务器相对应的路径下创建
//由于服务器文件夹的权限不同,如果自动创建失败,可以手动在相应的路径下手动创建文件夹
destination: function (req, file, cb) {
cb(null, './img')
},
//给上传的文件进行重命名,获取添加后缀名
filename: function (req, file, cb) {
//
//为了防止小概率文件名相同,可以再文件名当中拼接当前的时间戳,或在时间戳后面添加随机数,
cb(null, file.originalname); // cb(null,'创建文件的名字')
}
});
var upload = multer({ storage: storage });
router.post('/profile', upload.single('filesa'), function (req, res, next) {
res.send({
err:1,
imgname:req.file.filename,
msg:'上传图片成功'
})
});