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);}

View Code

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;

View Code

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);

View Code

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];//读取文件为bytesfileStream.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;}

View Code

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 };}

View Code

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

转载于:https://www.cnblogs.com/lwein/p/3941040.html

MongoDB 文件(MongoDB fs)相关推荐

  1. BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略

    BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介.下载.案例应用之详细攻略 目录 MongoDB的简介 1.MongoDB的主要功能特性 2.对MongoDB进行增删改查( ...

  2. MongoDB:mongodb在项目开发时的安全验证、分页查询操作

    MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...

  3. 安装MongoDB Install MongoDB on Ubuntu

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和 非关系数据库之间的产品,是非关系数据库当中 ...

  4. MongoDB (六) MongoDB 集合操作

    一. MongoDB 创建集合 createCollection() 方法 MongoDB db.createCollection(name, options) 是用来创建集合. 语法: 基本的 cr ...

  5. golang常用库之-mgo.v2包、MongoDB官方go-mongo-driver包、七牛Qmgo包 | go操作mongodb、mongodb bson

    文章目录 golang常用库之-mgo.v2包.MongoDB官方go-mongo-driver包.七牛Qmgo包 | go操作mongodb.mongodb bson 一.[不推荐]mgo.v2包 ...

  6. 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart. Verify that you have su

    成功解决(MongoDB安装报错):Service 'MongoDB Server (MongoDB)' (MongoDB) failed tostart. Verify that you have ...

  7. mongodb 服务器性能监控,mongodb监控 | mongodb数据库监控 - ManageEngine Applications Manager...

    MongoDB监控 MongoDB是否一个非关系型数据库,用来快速开发并支持大量数据处理和存储.非关系型数据库,例如MongoDB和Cassandra,可以让应用没有限制的使用,极大地扩展了业务架构的 ...

  8. SpringBoot 集成 Spring Data Mongodb 操作 MongoDB 详解

    一.MongoDB 简介 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,且与关系数据库的最为相像的.它支持的数据结构非常松散,是类似 json 的 bso ...

  9. flask mongodb mysql_flask6 MongoDB

    flask6 MongoDB 一.背景 nosqll - MongoDB 文件型数据库 文件型 - MongoDB User: [ {id:1,name:'蔡文姬',age:16,gender:'女' ...

  10. 【MongoDB】MongoDB备份恢复与集群搭建方案

    MongoDB持久化与集群搭建实例 一.mongoDB备份与恢复 1.1 mongodump命令来备份数据 1.2 MongoDB数据恢复 二.集群搭建 2.1 机制 2.2 架构 2.3 搭建步骤 ...

最新文章

  1. 最新数据分析教程资源合集(案例、数据集、SQL教程、分析样板、面经、简历、PY教程... )...
  2. 马化腾与中国知名科学家联手发起“科学探索奖”
  3. C 引用和指针的区别
  4. PTA 1067 Sort with Swap(0, i) (25 分)(思维)
  5. Ubuntu20.04更换为国内源
  6. 从零开始使用Skywalking分布式链路追踪系统
  7. [渝粤教育] 西南科技大学 货币银行学 在线考试复习资料(1)
  8. java修炼之道_《Java程序员修炼之道》
  9. Linux常用命令(二)——超详版
  10. 微课在小学计算机教学中的应用,微课技术在小学信息技术课堂中的应用
  11. 一文理清Apache Spark内存管理脉络
  12. [QT Designer] QT Designer中资源文件的载入以及控件的设置
  13. 【Java】我的世界Java版外挂制作 [5] - ClickGUI
  14. Java-8-Collectors类
  15. 使用x-switch进行代理
  16. 《kaggle》--Classify leaves--baseline代码分析
  17. 下一代隐私基础设施的主要介绍
  18. 基于APS排程系统的物料管理有哪些优势?
  19. Proxy与Object.defineProperty的优劣对比
  20. 2019福建高中计算机会考操作,2019年福建省普通高中学生学业基础会考.doc

热门文章

  1. DELL备份恢复系统的小工具 Dell DataSafe Local Backup
  2. 开发编程值得收藏的经典书籍 免费下载
  3. 论文阅读 Current Solutions for Web Service Composition
  4. [分享]毕业了【其实不想毕业】
  5. 【并发编程】Future模式及JDK中的实现
  6. 转 Hystrix入门指南 Introduction
  7. JAVA设计模式初探之——装饰者模式
  8. 多个SSH key对应多个Host: Github, Bitbucket
  9. 调整CentOS的文字登陆界面的分辨率
  10. 转换营销阵地 特步的世界杯身影