上传文件分为两种情况:
1.小文件,不超过16M的
2.大文件超过16M的
上传数据比较简单,直接上传req.body里面的内容就可以了
如果上传的文件是小于16M的比较简单,直接使用ajax或者表单上传,后台接收后,保存到mongodb中,需要注意的是用ajax上传的时候有点麻烦,可以使用插件ajaxFileUpload.js,接收文件要用multer,因为body-parser不支持文件
multer的配置
const multer = require('multer'); / /引入
var upload=multer({dest:'./public/img'}).any()
router.post('/update',upload,function(req,res,next){
//注意接收到的文件要用fs重命名一下,
var newName = req.files[0].path+pathLib.parse(req.files[0].originalname).ext;
//图片路径
var imgNewname ='img/'+req.files[0].filename+pathLib.parse(req.files[0].originalname).ext;
fs.rename(req.files[0].path,newName,function(){
if(err){
res.send('出错了')
};
if(req.files[0].size>1*1024*1024){ //判断图片大小
res.send('图片超过1M');
}else{
// res.send('上传成功');
var src = {
src:imgNewname, //图片路径
title:'一张图片',
subTitle:'副标题'
};
var imgData = new Manage(src) //将图片信息放到Manage的集合中
imgData.save(function(err){ //保存集合
if(err){
res.json({
status:500,
msg:err
})
}else{
res.json({
status:200,
msg:'保存成功'
})
}
});
};
})
}
//从这个练习中可以看出数据库中保存的是图片的路径
查找文件时,从数据库中拿到路径,对应的找文件,然后返回给前端
如果查找的是txt等这样的文件,获取到路径后,要用fs的readFile()方法,将文件读出来再返回给前端