c#通过操作mongodb gridfs实现文件的数据库存储
@(编程)
源码
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);
}
c#通过操作mongodb gridfs实现文件的数据库存储的更多相关文章
- MongoDB入门(8)- c#通过操作MongoDB GridFS实现文件的数据库存储
GridFS介绍 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS GridFS长啥样 /* 1 */ { "_id" : ObjectId(& ...
- Spring Boot使用MongoDB GridFS进行文件的操作
1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的ch ...
- 【荐】PHP操作MongoDB GridFS 存储文件,如图片文件
GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容, ...
- redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题
先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...
- Node操作MongoDB并与express结合实现图书管理系统
Node操作MongoDB数据库 原文链接:http://www.xingxin.me/ Web应用离不开数据库的操作,我们将陆续了解Node操作MongoDB与MySQL这是两个具有代表性的数据库, ...
- mongodb gridfs基本使用
Mongodb GridFS图片文件存储解决方案 之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径. 目前需 ...
- MongoDB基于GridFS管理文件
前言 GridFS是一种将大型文件存储在MongoDB的文件规范: 数据库支持以BSON格式保存二进制对象. 但是MongoDB中BSON对象最大不能超过4MB. GridFS 规范提供了一种透明的机 ...
- MongoDB GridFS(命令行+php操作)
一.GridFS是什么 & 为什么需要它 我们知道目前MongoDB的BSON文件最大只能是16M,也就是说单个文档最多只能存储16M的数据,那么如果需要MongoDB存储超过16M的大文件该 ...
- MongoDB GridFS 存储大文件
我们经常会遇到这样的场景:上传/下载文件. 有两种思路可以解决这个问题: (1)将文件存储在服务器的文件系统中: (2)将文件存储在数据库中. 如果我们选择(2),那么我们可以使用MongoDB Gr ...
随机推荐
- LeetCode Reverse Nodes in k-Group 每k个节点为一组,反置链表
题意:给一个单链表,每k个节点就将这k个节点反置,若节点数不是k的倍数,则后面不够k个的这一小段链表不必反置. 思路:递归法.每次递归就将k个节点反置,将k个之后的链表头递归下去解决.利用原来的函数接 ...
- activiti学习资料(架构描述)
Activiti学习资料 Activiti是业界很流行的java工作流引擎,关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题,相关内容可以baidu一下.Activiti从架构角度 ...
- Maven的功用所引发的哲学思想
我们知道Maven有三个仓库 本地仓库 ~/.m2/repository/ 每一个用户也可以拥有一个本地仓库 远程仓库 中央仓库:Maven默认的远程仓库 http://repo1.maven.org ...
- 戴维·卡梅伦(David William Donald Cameron)经典语录
戴维·威廉·唐纳德·卡梅伦(英语:David William Donald Cameron,1966年10月9日-),汉化译名为甘民乐.现任英国首相.第一财政大臣.公务员事务部部长和保守党党魁,也是英 ...
- node前端自动化
一.前端自动化-项目构建 我们平时写代码,喜欢建一个project,然后里面是css.js.images文件,以及index.html,而node可以自动化构建好项目,如下: /** * Create ...
- Oracle数据库备份手册
1 故障类型 l 实例故障 由ORACLE内部异常.操作系统故障或其它相关软件引起,导致ORACLE实例中的进程或内存区出现故障或数据库无法正常关闭,这种故障称为实例故障.实例故障没 ...
- 部署K2 Blackpearl流程时出错(由于目标计算机积极拒绝,无法连接)
转:http://www.cnblogs.com/dannyli/archive/2011/12/01/2270118.html 亲,如果你也遇到过这个问题,就请继续往下看哦 在部署K2 Blackp ...
- struts 中 s:iterator 使用注意事项
后台定义类 public class Course_pj { private String _id; private String _courseid; private String _course_ ...
- 使用RoboCopy 命令
经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...
- Java 设计模式学习总结(上)
在编写和维护公司的现有代码的时候,我经常思考的问题是:怎样的系统算一个好的系统?如何设计具有扩展.可维护.复用的系统,它能最大限度的应对产品经理不断变化的需求.答案似乎是:设计模式. Remember ...