c#通过操作mongodbgridfs实现文件的数据库存储

@(编程)

源码

using MongoDB.Driver;
using MongoDB.Driver.GridFS;
using System.IO;

namespace Wisdombud.Mongo
{
    /// <summary>
    /// 
    /// </summary>
    public class MongoFileBll
    {
        private MongoDatabase repository;
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public MongoCursor<MongoGridFSFileInfo> FindAll()
        {
            return this.repository.GetGridFS(MongoGridFSSettings.Defaults).FindAll();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pConnectionstring"></param>
        public MongoFileBll(string pConnectionstring)
        {
            MongoUrl mongourl = MongoUrl.Create(pConnectionstring);
            var client = new MongoClient(mongourl);
            MongoServer server = client.GetServer();
            this.repository = server.GetDatabase(mongourl.DatabaseName);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        public void UploadFile(string filePath)
        {
            FileInfo fi = new FileInfo(filePath);
            this.repository.GetGridFS(MongoGridFSSettings.Defaults).Upload(filePath, fi.Name);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="fileName"></param>

        public void UploadFile(string filePath, string fileName)
        {
            this.repository.GetGridFS(MongoGridFSSettings.Defaults).Upload(filePath, fileName);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="filePath"></param>
        public void DownloadFile(string fileName)
        {
            this.repository.GetGridFS(MongoGridFSSettings.Defaults).Download(fileName);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileName"></param>
        public void DeleteFile(string fileName)
        {
            this.repository.GetGridFS(MongoGridFSSettings.Defaults).Delete(fileName);
        }
        /// <summary>
        /// 
        /// </summary>
        public void DeleteAll()
        {
            foreach (var inst in this.repository.GetGridFS(MongoGridFSSettings.Defaults).FindAll())
            {
                inst.Delete();
            }
        }
    }
}

这个源码持续更新中

用法

MongoFileBll tl = new MongoFileBll("mongodb://127.0.0.1:27017/chzhaotest");
string folder = @"D:\Wisdombud\2016\20160324_Wisdombud.Mongo\SourceCode\Wisdombud.Mongo.Sample\bin\Debug";
DirectoryInfo di = new DirectoryInfo(folder);
foreach (var file in di.GetFiles())
{
    tl.UploadFile(file.FullName, Guid.NewGuid().ToString());
}
var aaa = tl.FindAll();
foreach (var inst in aaa)
{
    Console.WriteLine(inst.Name);
}
更多相关文章
  • redis/分布式文件存储系统/数据库存储session,解决负载均衡集群中session不一致问题
    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览器为啥session总是一样的(过期或者关闭不算),主要得益于在浏览器端有个cook,名字叫&quo ...
  • 数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一1.新建一个同名的数据库2.再停掉sql server(注意不要分离数据库)3.用原数据库的数据文件覆盖掉这个新建的数据库4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)6.完 ...
  • 构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)连载之电子商务系统架构
    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]出处:http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li作者:Jimmy Li关键词:网站,电子商务,Shell,自动备份,异地备份------[连载之电子商务系统架 ...
  • 查找谁在使用文件系统在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败.那么通过lsof可以找出那些进程在使用当前要卸载的文件系统,如下: # lsof /GTES11/COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEbash 4208 ...
  • 小型单文件NoSQL数据库SharpFileDB初步实现
    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力,不过还是希望各路大神批评的时候不要人身攻击,谢谢. SharpFileDB +BIT祝威+悄悄在此留 ...
  • excel文件导入数据库!先上传,后解析,再对sql建表,插入数据,导入完成,删除上传的临时表!谢谢指点!1.导入jarjxl.jar  poi-poi-2.5.1jarpoi-contrib-2.5.1.jarpoi-scratchpad-2.5.1.jarstruts2.0的包2.配置web.x ...
  • 报表的数据组织:文件还是数据库
    在报表开发项目中,报表的源数据可以放置在数据库中,也可以放在文件里.比如,一个互联网公司的网站运营报表系统,公司注册用户的基本信息来自于网站系统,使用的是Oracle数据库:用户操作数据来自于网站系统的日志文件,是文本文件.一般的做法是将用户操作数据从文本文件中导入到Oracle中,再用SQL语句去 ...
  • 1.新建一个同名数据库. 2.停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间.) 3.启动数据库服务,数据库变为置疑或可疑状态.然后在查询分析器中运行: alter database 无日志 ...
一周排行
  • 在Java中通过调用Runtime这个类可以执行其他的可执行程序,执行后返回一个进程(Process),利用Process这个类我们可以取得程序执行的回显,因此在Java中调用nmap进行主机探测的原理就很清晰了.通 ...
  • 1.程序和进程: 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如 test.com 所用的WWW服务器是apache ...
  •  本文纯属个人学习所写仅供参考!  FTP服务器包括主动模式和被动模式两种.主动模式PORT:  client                            server >1024 -----用户密码 ...
  • 配置DNS辅助服务器在前面的博文中,我们介绍了如何在DNS服务器中创建常用的DNS记录,本文中我们要为大家介绍如何配置DNS的辅助服务器,同时也要介绍一下和辅助区域类似的存根区域.DNS辅助服务器是一种容错设计,考虑 ...
  • Dubbo中开发REST风格的远程调用RESTfulRemoting
    完善中…… 本文篇幅较长,因为REST本身涉及面较多.另外,本文参照Spring等的文档风 ...
  • 今天,把期待以久的Hyper-V用上了.安装很简单,必须是6001.17119.07916_amd64fre_Server_en-us-KR1SXFRE_EN这个版本.只要你的电脑可以满足条件,在Role ...
  • 周治国每年春运都弄的大家怨声载道,主要原因就是一票难求,这一票难求并不仅仅是票源紧张,而是有很多人为操控的因素,铁道部其实就是最大的黄牛,而那些在火车站或网上兜售车票的,不过是给黄牛打工的,也和排通宵队买票的民工一样 ...
  • Java多线程学习总结4
    如果线程只是傻傻地一个劲的“排他的”前行,那必然是愚蠢的.线程间需要通信,他们需协作才完成 ...
  • Android中使用的广播一般是系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播.这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数据的广播有可能被 ...
  • 一直以来没有养成良好的学习习惯,今天开个头,记录工作的点滴..