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 无日志 ...
一周排行
  • GREVPN的配置
    1.拓扑图:2.实验的说明R1和R2分别为公司的总公司和分公司,现在要实现总公司和分公司通 ...
  • [感谢 @常新居士 投递此文 ]这几年,持续集成随着敏捷在国内的推广而持续走热,与之相伴的持续部署也一直备受关注.自前两年,持续交付这个延续性概念又闯进了国内IT圈,慢慢开始在社区和会议中展露头角.许多不明真相的群众 ...
  • 运用了bootstrap 框架 ,在栅格系统中占列数小于12,且需要居中显示并固定悬浮在最下方的div(设为divnei) ,可以在其外层嵌套一个div(设为divwai) ,可以设置divwai 为:{width: ...
  • 我的办公系统是ubuntu安装sudo apt-get install smartmontoolssam@sam:~$ sudo smartctl -i /dev/sdasmartctl 6.4 7 ...
  • 人类一思考,上帝就发笑.但是人类不会因为上帝发笑就停止了思考,不是说命运在自己手里吗,那干脆让上帝去他妈的.好吧,那思考是什么?思考是因为我们人类有事情要解决,所以我们要考虑考虑 ... ...那么,开始我们的思考吧 ...
  • Linux root用户忘记密码如何登陆如果ROOT 用户忘记密码如何实现登陆呢?答案就是用单用户模式进入系统后HAT ENTERPRISE LINUX AS-UP (2.6.2.EL),然后按住      6 ...
  • 本文从零开始讲述编译的基本过程,希望菜鸟们能喜欢.毕竟Linux下的软件,源代码是多于二进制包的,学会了编译,再安装软件就不求别人了.所以,编译也是Linux菜鸟必修的一课.1,安装编译工具.$ sudo apt-g ...
  • Win7突然运行很慢
    症状:这阵子接到几个用户升级到win7后出问题,说用着用着突然就很慢了.原因:Adobe ...
  •   第一周 所花时间(包括上课) 上课时间:4小时,周五:两个小时,周六.日:各三个小时  代码量(行) 50行左右 博客量(篇) 4篇 了解到的知识点 体会到了”做中学“的益处.掌握了随机函数的运用(定义和引用). ...
  • 考研月份总结   时间已经来到了4月份的21号早上,可以说考研应该要进入一个紧张的时期了,开始三月份,准备考研的资料,然后听一些考研的经验讲座什么的,然后就是在网上淘一些别人的成功考研经验,我在这方面是做的相当 ...