模拟form表单
前端:
var formData = new formData();//自带的函数
formData.append('_id','对应的文本内容');//文本
formData.append('companyName',对应的文本内容);//文本
formData.append('companyScale',对应的文本内容);//文本
formData.append('companyLogo',this.companyLogo_model[0].files[0]);//('companyLogo',要上传的对应文件信息),以图片为例
//通过ajax上传
$.ajax({
type : 'post',
data : formData,
contentType : false,//contentType与processData为false不可缺
processData : false,
success : $.proxy(this.handleModifySucc,this))//上传成功后的回调函数
})
handleModifySucc: function(data){
console.log(data);//输出后端返回的值,用于其他操作
}
后端
:
controller层:
//获取前端换过来的数据
const ModifyCompany = (req,res)=>{
let {companyName,companyScale} = req.body; //获取文本信息 ,get传过来的用req.query;post 传过来的用req.body接收
let urlpath = req.files.companyLogo[0].path.replace(/\\/,'/');//获取文件信息, 路径格式有问题,将'\'转为'/'
companyModel.updateCompany({_id},{
companyName,s
companyScale,
companyLogo : urlpath
},result=>{
if(result.ok){
res.json({ //传给前端的数据
status : true,
info : '更新成功'
})
}else{
res.json({
status : false,
info : '更新失败'
})
}
})
}
Model层的companyModel的部分内容:
var Company = mongoose.model('cpmpany',{
companyName,
companyScale,
companyLogo
})
//数据库修改的函数 id,companyInfo传的都是对象
const updateCompany = function(id,companyInfo,cb){
Company.update(id,{$set:companyInfo},(result)=>{
cb(result);
})
}
//导出模块
module.exports = {
updateCOmpany
}
router层部分内容:
var express = require('express');
var route = express.Router();
var companyController = require('../controller/company');
var multer = require('multer'); //需要局部安装multer cnpm install multer -S
//开始
var storage = multer.diskStorage({
//第一个是文件存储在服务器的位置
destination : function(req,file,cb){
cb(null,'./public/img');
},
//第二个是文件命名
filename : function(req,file,cb){
cb(null,Date.noe() + '-' + file.originalname);//因为上传的文件名可能会有冲突,为了保证每个名字都是独一无二的,便为他们加上时间戳
}
})
var upload = multer({storage : storage});
//规定当字段可以接受图片一次做多可传多少张
var cpUpload = upload.fileds([{name : 'companyLogo',maxCount : 1}]);
route.post('/modifyCompany',cpUpload,companyController.modifyCompany);//cpUpload不能丢,否则后端不能接收到数据
module.exports = router;