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 无日志 ...
一周排行
  • 插件介绍:在与别人交流时,我们常会用到视频通话这个功能,它不仅能消除空间限制,也让用户有了前所未有的体验,今天就给大家推荐一个优秀的视频通讯插件.ooVoo(视频通讯)是一款致力于高清网络视频通讯服务的插件,轻松地连 ...
  • 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值.这是这两 ...
  • 当你的用户抱怨修改过的信息不改变,删除掉的数据还在显示,你掐指一算,估计是数据库主从不同步.与其他提供数据同步的数据库一样,MongoDB也会遇到同步延迟的问题,在MongoDB的ReplicaOr provides ...
  • 临时开启:echo"1">/proc/sys/net/ipv4/ip_forward永久开启:vi/etc/sysctl.confnet.ipv4.ip_forward=1这样每次开机/pr ...
  • SNMP:SimpleNetworkManagementProtocol简单网络管理协议
    SNMP:Simple Network Management Protocol简单网络管理 ...
  • Linuxswap/home/root分区大小调整
    周氏一族,整理技术文档,给下一代留点教程......采用系统默认最下化安装的同学都知道,基 ...
  • 现在代码生成器很多很多,有的也很好用,大家也习惯了用代码生成器.我们经常会发现,代码生成器产生好的代码,经过人工修改后,改来改去后,就面目全非了,这时,我们还想,重新生成一下代码,但是,由于考虑问题欠妥,导致我们进退 ...
  • 摘要 :创新,有着无穷的哲学和神秘.这个词历久弥新,内涵丰富,说来容易,做起来难.从大讲,是推动人类世界进步的原因,从小讲,是很多新.小企业在经历创新的沉淀之后不断做大的助推器.这个词,让人冲动,往往会带来失败和毁灭 ...
  • 三种方式实现按钮的点击事件
        在android中,实现按钮的点击事件,其中心是实现接口OnClickListen ...
  • Centos6.4 Kickstart 自动安装操作系统准备工作:挂载光盘:# mount /dev/cdrom /media/mount: block device /dev/sr0 is write-protec ...