使用node上传文件或者数据到mongodb

上传文件分为两种情况:
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()方法,将文件读出来再返回给前端

你可能感兴趣的:(nodejs)