express文件上传
使用multer
1、 在项目中下载multer操作模块
Npm install multer --save
前端代码:
注意只要是上传文件请设置form enctype属性为:multipart/form-data 设置完即可 服务器代码 1、 引入multer模块 Var multer = require(“multer”); 2、 引入fs模块用于更改上传文件的名称 3、 设置上传文件保存路径 //配置上传文件的保存路径 放到public下upload目录中方便前端代码访问 upload文件如果不存在会自动创建 var upload = multer({ dest: 'public/upload/' }); 单文件上传: 使用single(filename) Router.post(“/router”,multer.single(filename),function(req,res,next){ Res.send(“上传成功”) }) 注意:这个时候上传的文件没有后缀名需要自己编写代码处理 处理后缀名:使用fs模块中的 //得到文件信息 var file = req.file; console.log(file); //修改文件名称 fs.renameSync(file.path,"public/upload/"+file.originalname); res.send("上传成功"); 处理文件随机名称使用时间戳与随机数进行处理 router.post('/add',upload.single('img'), (req, res) => { //得到文件信息 var file = req.file; console.log(file); var filename = "public/upload/"; if(file.mimetype == "image/jpeg"){ filename+=new Date().getTime()+(Math.round(Math.random()*10000))+".jpg"; }else if(file.mimetype == "image/png"){ filename+=new Date().getTime()+(Math.round(Math.random()*10000))+".png"; }else{ res.send("上传文件格式不支持请上传png与jpg图片"); } fs.renameSync(file.path,filename); res.send("上传成功"); }); 最后把图片路径信息与其他信息保存到数据库中 //files为提交过来的表单中file组件的name属性值 router.post('/add',upload.single('img'), (req, res) => { //得到文件信息 var file = req.file; var filename = "upload/"; if(file.mimetype == "image/jpeg"){ filename+=new Date().getTime()+(Math.round(Math.random()*10000))+".jpg"; }else if(file.mimetype == "image/png"){ filename+=new Date().getTime()+(Math.round(Math.random()*10000))+".png"; }else{ res.send("上传文件格式不支持请上传png与jpg图片"); } fs.renameSync(file.path,"public/"+filename);
var sql = `INSERT INTO stuinfo (stuname, stuicon, stusex, stuage, stutel,stuaddress) VALUES ('${req.body.username}', '${filename}', '${req.body.sex}', '${req.body.age}', '${req.body.tel}', '${req.body.address}')`;
mdb(sql,function(err,result){
res.send("添加信息成功")
})
});