MongoDB 文件(MongoDB fs)

1.不管是存储普通数据也好,还是存储文件也好,我们都要先访问MongoDB数据库

public static MongoDatabase GetDataBase()
        {
            //MongoDB 服务器地址
         var client = new MongoClient(Config.BasicConfig.DbAddress);
            var server = client.GetServer();
            //MongoDb 数据库名称
         return server.GetDatabase(Config.BasicConfig.DbName);
        }

2:取得Fs

MongoDB获取fs的实例我知道的有两种写法

  • 1:直接通过 DataBase的属性调用,如果我们把MongoDB理解成Sqlserver数据库的话,那么这种方式就是获得到默认表“fs”的实例。
  • 2:通过MongoGridFSSettings设置Root属性值,MongoDB会根据Root的值,来生成具体的表,不需要自己创建

不说废话,看代码

//访问一个名为test的文件集合或表,如果没有,则自动创建
DbHelper.GetDataBase().GetGridFS(new MongoGridFSSettings { Root = "Test"});
//获取默认的集合或表“fs”
DbHelper.GetDataBase().GridFS;

3:实现文件上传
文件上传时,MongoDB提供了一个MongoGridFSCreateOptions类,来完善我们的文件信息,我一般仅仅使用里边的ContentType

//huo de wen jian ji he
var fs = DbHelper.GetDataBase().GetGridFS(new MongoGridFSSettings { Root = fileType });
//chuang jian wen jian shu xing , zhi jie shang chuan de wen jian mei you ContentType shu xing , xu yao shou dong zhi ding
var op = new MongoDB.Driver.GridFS.MongoGridFSCreateOptions { ContentType = contentType };
//wen jian shang chuan
var fileInfo = fs.Upload(stream, filename, op);

4:文件获取
我在使用MongoDB fs的时候,我利用程序来控制文件的名称唯一,获取的代码

//获取文件
public FileItem GetFile(string fileNo, string fileType)
        {
            //组装文件名称
            var filename = string.Format("{0}_{1}", fileType, fileNo);
            var fs = DbHelper.GetDataBase().GetGridFS(new MongoGridFSSettings
            {
                Root = fileType
            });
            //根据文件名称,查找文件
            var fileInfo = fs.FindOne(filename);
            if (fileInfo != null && fileInfo.Exists)
            {
                using (var fileStream = fileInfo.Open(FileMode.Open, FileAccess.Read))
                {
                    var bytes = new byte[fileStream.Length];
                    //读取文件为bytes
                    fileStream.Read(bytes, 0, bytes.Length);
                    return new FileItem {
                        ContentType = fileInfo.ContentType, FileContent = bytes, Filename = fileInfo.Name, MD5 = fileInfo.MD5, Size = fileInfo.Length + "",
                        UploadDate = fileInfo.UploadDate
                    };
                }
            }
            return null;
        }

5:文件修改
文件修改我就不说废话了,直接看代码就好了

//修改文件(覆盖)
public FileItem Upload(string fileNo, string fileType, Stream stream)
        {
            var filename = string.Format("{0}_{1}", fileType, fileNo);
            var fs = DbHelper.GetDataBase().GetGridFS(new MongoGridFSSettings { Root = fileType });
            var oldFileInfo = fs.FindOne(filename);
            if (oldFileInfo != null && oldFileInfo.Exists)
            {
                var bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
                using (var sw = oldFileInfo.OpenWrite())
                {
                    sw.Seek(0, SeekOrigin.Begin);
                    sw.Write(bytes, 0, bytes.Length);
                    sw.Flush();
                    oldFileInfo.Refresh();
                }
              }
            return new FileItem { ContentType = oldFileInfo.ContentType, FileContent = null, Filename = oldFileInfo.Name, MD5 = oldFileInfo.MD5, Size = oldFileInfo.Length + "", UploadDate = oldFileInfo.UploadDate };
        }

写的好不好不重要,重要的是可以跟有需要的人提供一个参考,也希望大神补充几句,让大家更方便。

时间: 2024-10-05 11:07:42

MongoDB 文件(MongoDB fs)的相关文章

MongoDB文件型数据库

初始MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等 关系型数据库中有一个 "表" 的概念,有 "字段" 的概念,有 "

[MongoDB] 安装MongoDB配置Replica Set

url:http://blog.csdn.net/hf81970/article/details/19643639 MongoDB的环境主要包括StandAlone,Replication和Sharding. StandAlone:单机环境,一般开发测试的时候用. Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry. Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似. Arbitry上面不存数据,

【MongoDB】MongoDB的安装教程

1,MongoDB简介 MongoDB也是一种数据库,只不过它既不是关系型数据库,也不是非关系型数据库(NoSQL),而是一种介于关系型数据库和NoSQL之间的一种数据库.如果说非关系型数据库是轻量级的,具有存取速度快的特点.关系型数据库是重量级的,具有存储数据量大,数据安全,查询统计方便等特点.那么MongoDB就有非关系型数据库存储数据快的特点,又有关系型数据库存储数据量大.安全等特点. MongoDB是基于分布式文件存储的数据库 MongoDB是介于NoSQL和关系型数据库之间的一款产品

搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展

上一篇:搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展 一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下载mongodb源码包,并将源码包放到/usr/local/src/目录下下载页面:https://www.mongodb.com/download-center?jmp=nav这里用的是 mongodb-linux-x

PHP7源码安装MongoDB和MongoDB拓展

一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下载mongodb源码包,并将源码包放到/usr/local/src/目录下下载页面:https://www.mongodb.com/download-center?jmp=nav这里用的是 mongodb-linux-x86_64-rhel62-3.2.10.tgz下载地址:https://fast

Node.js文件模块fs监视文件变化

Node.js文件模块fs监视文件变化 Node中文件模块fs监视文件的函数源码如下: fs.watch = function(filename) { nullCheck(filename); var watcher; var options; var listener; if (util.isObject(arguments[1])) { options = arguments[1]; listener = arguments[2]; } else { options = {}; listen

每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作

上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program Files\MongoDB\Server\3.0\bin;.注意:要以;隔开各种变量. 这样的话就可以直接在CMD命令窗口中输入mongo 表示环境变量设置成功,并已经连接到默认数据库test中. 我们可以输入mongod --help来查看相关的帮助信息 C:\Users\zouqi>mongod

mongoDB(2)--mongoDB的常用命令

默认设置后台启动: vi mongodb.cfg 创建配置文件,配置启动信息 dbpath=/root/mongodb/data logpath=/root/mongodb/log/mongodb.log fork=true storageEngine=mmapv1指定引擎 [[email protected] mongodb]# mongod -f mongodb.cfg  命令指定配置文件启动 ps -aux | grep mongod 查看一下mongod当前进程 [[email prot

mongoDB(三) mongoDB分片集群

mongoDB分片集群 介绍 解决数据分片,防止数据丢失生产环境需要擦用分片+副本集的部署方式 组成部分 route: 提供入口,不存储数据 configserver: 存储元数据信息,建议使用副本集 shardserver: 数据存储服务,存储真正数据, 也许要使用副本集 依赖关系 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片 集群搭建 使用同一份mongodb二进制文件 修改对应

mongoDB (四) mongoDB认证

mongoDB认证 单节点认证 配置文件: authorization: enable [[email protected] ~]# vim /data/mongodb/27017/mongodb.conf systemLog: destination: file logAppend: true path: /data/mongodb/27017/mongodb.log storage: dbPath: /data/mongodb/27017/ journal: enabled: true pr