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 无日志 ...
一周排行
  • 什么是Shell? bash是干啥的?  有什么关系       shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Lin ...
  • 现在各大门户网站基本都有自己的blog系统,但有不少存在漏洞,本文就以51cto的blog为例,向大家介绍该如何发现和利用漏洞.在发布本文前已经通知了相关人员,漏洞已经补上了.51cto的blog系统功能很强大,可自 ...
  • linux通过shell编程实现自动化远程唤醒(喜羊羊原创,转载需标明出处和作者) 今天闲着没事,授课过程中突然发现了linux系统中一个有趣的远程唤醒指令:ether-wake,由于之前玩儿过windows界面下的 ...
  • 在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了 首先找到这个文件: 默认安装路径 C:/Program Files/MySQL/MySQL Server 5.1/ ...
  • 内存文件系统(linux,FreeBSD) (9 1)转载分类: 技术研究LINUX: 在Linux中可以将一部分内存当作分区来使用,我们称之为RamDisk.对于一些经常被访问的文件 ...
  • 对于PostgreSQL数据库的备份按照官方手册的方法之一就是采用"SQL Dump"的方式(另一种方式是直接备份文件系统中的文件,可参考官方手册).基本用法如下:pg_dump dbname & ...
  • 一.认识Windows的域本小节重点从理论上阐述域的概念.作用和Windows中域的产生.一台Windows计算机,它要么隶属于工作组,要么隶属于域.所以说到域,我们就不得不提一下工作组,工作组是MS的概念,一般的普 ...
  • python学习之类class
    定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别.1. ...
  • 这几天正在制作用户登陆这一块,用户登陆其中我觉得最烦人的就是输入数据的验证;虽然微软给了我们几个强的控件,但是自己写正则表达式那是相当的耗时间啊;在网上有很多人在网上发部了很多有用的正则表达式,可能以后会再次用到这些 ...
  • POJ3984迷宫问题bfs
    题目链接:迷宫问题  天啦撸.最近怎么了.小bug缠身,大bug 不断.然这是我大腿第一次 ...