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

本文介绍了如何使用Node.js处理文件上传到MongoDB的场景,区分了16MB以下的小文件和大文件的处理方式。对于小文件,通过ajax或表单上传,后台用multer处理并保存到MongoDB,而数据上传则直接处理req.body内容。在读取已存储文件时,通过fs模块的readFile()方法读取返回给前端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值