Node.js结合mongodb数据库的文件提交

Node.js结合mongodb数据库的文件提交

1、首先安装 multer 安装方式:npm install multer -save

2、在app.js中挂载下列代码:

// 挂在multer
var multer = require('multer');
app.use(multer({dest:'/tmp/'}).array('image'))
app.use(express.static(path.join(__dirname, 'public')));

3、在admin路由中写入模块:

// multer 文件上传模块
var fs = require('fs');
var path = require('path');
var multer = require('multer')

4、在输入文件地址的ejs中写入以下代码:

<form action="/admin/img" method="post" enctype="multipart/form-data">
<input type="file" name="image" id="img" size="50" value="选择上传文件" />
<input type="submit" value="上传文件" name="image" />
</form>

5、将连接数据库代码用promise封装成函数

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017';
var dbname = 'RZlong'; 
function dbConect(collectName){
var p = new Promise(function(resolve,reject){
MongoClient.connect(url, function (err, db) {
if (err) reject(err);
var dbo = db.db(dbname);
dbo.collection(collectName, function (err, data) {
if (err) throw err;
resolve({data,db})
})
})
})
return p 
}

module.exports = dbConect;

6、在admin路由中写入以下代码:

// 引进封装的:链接数据库
var dbConnects = require('../models/dbconect2')

router.post('/hgai-img', function (req, res) {
//将上传的文件放入public静态文件夹下
var des_file = path.join(__dirname, "../public/images/XiuGai/" + req.files[0].originalname);
//定义文件地址
var imgurl = "/images/XiuGai/" + 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 {
res.redirect('/admin/htable-images-list') //重定向指定页面
}
})
})
//将文件插入数据库中img表中
dbConnects('img').then(function ({ data, db }) {
var obj = {
$set: {
"time": req.body.time,
"img": imgurl,
}
}
var aid = { _id: ObjectID(req.body.aid) };
data.updateMany(aid, obj, function (err, coll) {
if (err) throw err;
res.json({ code: 1 })
db.close()
})
}).catch(function (err) {
})
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值