使用一个中间件(multer),它依赖于express;
文件提交方式必须是post提交;
在路由中的配置
router.post('/fabu_post_page/',upload.single('hehe'),fabu_service.user_img_sumbit_page);业务逻辑模块
//上传图片 exports.user_img_sumbit_page=function(req,res){ res.send({ err:1, imgname:req.file.filename, msg:'上传图片成功' }) };前端提交页面
var file_submin = document.getElementById('wenjian');//文件input的id let file_submins = file_submin.files; var formdata = new FormData(); formdata.append('hehe', file_submins[0])//hehe表示提交的文件name $.ajax({ type: "post", url: "/fabu_post_page/", cache: false, //需不需要创建缓存 不必须 data:formdata, processData: false, //不需要对数据做处理 必须 contentType: false, //用表单数据创建的fromdata已经声明过enctype,所以这里设置为false async: true, success: function(data) { console.log(data); } });前端文件提交局部代码
上传图片form表单必须设置enctype=“multipart/form-data”
也可以在ajax提交的时候通过contentType设置
<form enctype="multipart/form-data" class="form-horizontal"> <div class="hr-line-dashed"></div> <div class="form-group"> <label class="col-sm-2 control-label">资讯配图</label> <div class="col-sm-10"> <input type="file" class="form-control" name="hehe" id="wenjian"> <input type="text" id="token02" name="usersys_token" value="" style="display: none;" /> </div> </div> <div class="hr-line-dashed"></div> <div class="form-group"> <div class="col-sm-4 col-sm-offset-2"> </div> </div> </form>