上传图片总结:
必须 安装’multer’模块
Npm I multer –S(手动输入小写)
第一步
App.js 里面 挂载index路由之前写入
app.use(express.static(path.join(__dirname, 'public')));
var multer = require('multer'); //删除图片临时放在'/tmp/'
app.use(multer({ dest: '/tmp/'}).array('image')); //必须与表单的name名字相同,表单的上传图片的input的name必须是array后面的内容
第二步:
在users路由下面,引入path 和 fs 上传图片模块 multer
var fs = require('fs');
var path = require('path');
var multer = require('multer');//安装上传图片模块
//用户头像 上传 渲染页面
router.get('/article', function (req, res) {
res.render('article', {
title: "上传头像",
})
})
//上传头像接口
router.post('/file_upload', function (req, res) {
console.log(req.files) //上传的路径../public/images/ue/
var des_file = path.join(__dirname, "../public/images/ue/" + req.files[0].originalname);
console.log(des_file);
fs.readFile(req.files[0].path, function (err, data) {
fs.writeFile(des_file, data, function (err) {
if (err) {
console.log(err);
} else {
res.redirect('/users/article');
}
});
});
})
第三步:
前端页面:
如果把图片上传到数据库当中,参考以下代码
//上传头像接口
router.post('/file_upload', function (req, res) {
var uid = new ObjectID(req.session.uid);
// console.log(req.session.uid)
var des_file = path.join(__dirname, "../public/images/ue/" + req.files[0].originalname);
// console.log("/images/ue/" + req.files[0].originalname);
fs.readFile(req.files[0].path, function (err, data) {
fs.writeFile(des_file, data, function (err) {
if (err) {
console.log(err);
} else {
dbConnect('users').then(function({coll,dbCon}){
var imgurl = "/images/ue/" + req.files[0].originalname;
// console.log(imgurl);
var whereStr = {_id:uid};//查询条件
var updateStr = {$set: { "imgurl" : imgurl }};
coll.updateOne(whereStr, updateStr, function(err, data) {
if (err) throw err;
console.log("更新成功");
});
dbCon.close();
}).catch(function(err){
console.log(err);
})
res.redirect('/users/person');
}
});
});
})
封装了一个连接数据库的函数 dbConnect
封装连接数据库如下
var MongoClient = require('mongodb').MongoClient;
// console.log(MongoClient);
var dbpath = 'mongodb://localhost:27017';
var dbName = 'zzblog';
function dbConect(collectName){
var p = new Promise(function(resolve,reject){
MongoClient.connect(dbpath,function(err,dbCon){
if(err) reject(err);
var db = dbCon.db(dbName);
db.collection(collectName,function(err,coll){
if(err) reject(err);
resolve({coll,dbCon})
})
})
})
return p;
}
module.exports = dbConect;