@项目学习|如何从MongoDB中读取文件
引言
在前两篇博客中给大家介绍了一些基本的概念和安装过程,这些相对来说都是比较简单的,记得在之前的项目
中用到这个技术,但是当时自己对这个东西非常陌生,并且没有太多的时间来研究这个东西,所以当时只是简单的实
现了上传的功能,并且实现的非常的繁琐。现在又有了机会来研究这个东西,所以必须得研究出点东西来了。下面就
给大家介绍如何在mongodb数据库中读取文件并且显示出来,像图片文件和音频文件。
界面代码
文章图片
作为测试代码,我就在界面上面写了一个image框,用来显示从MongoDB数据库中读取出来的图片。
HomeController代码
public ActionResult Index()
{
ViewData["html"] = "/MongodbHelp/ProcessRequest?actions=DOWNLOAD&value=https://www.it610.com/article/lf.png";
return View();
}
后面的代码组成相信凡是接触过MVC的读者都能看懂这个东西,后面我就直接写死了一个图片的名称。
MongodbHelpController
连接数据库的方法
private static MongoDatabase DB;
public static string fileTable = "fs";
//数据库中的表名称//Sets up the environment.
public void Init()
{
//我们可以在配置文件中读取
string ConnectionString = "127.0.0.1";
//ConfigurationManager.AppSettings["mondoDbConnection"];
if (String.IsNullOrEmpty(ConnectionString))
{
throw new ArgumentNullException("Connection string not found.");
}MongoServerSettings mongoSetting = new MongoServerSettings();
mongoSetting.MaxConnectionPoolSize = 15000;
//设定最大连接池
mongoSetting.WaitQueueSize = 500;
//设定等待队列数
mongoSetting.Server = new MongoServerAddress(ConnectionString, 27017);
int count = MongoServer.MaxServerCount;
MongoServer server = MongoServer.Create(mongoSetting);
//创建连接数据文件DB = server.GetDatabase("local");
//创建数据库连接}
用来判断我们进行的方法是哪一个,上传文件还是下载文件,在这只给大家介绍下载的方法;
public void ProcessRequest()
{Init();
//initialize the mongo
string action = Request.QueryString["actions"];
switch (action)
{
case "LIST": GetFileList();
break;
//获取文件列表
case "UPLOAD": Upload();
break;
//上传文件
case "DELETE": Delete();
break;
//删除文件
case "DOWNLOAD": DownFile();
break;
//下载文件
}
}
下载文件的类
【@项目学习|如何从MongoDB中读取文件】
//下载文件
public void DownFile()
{
string filename = Request.QueryString["value"];
Response.ContentType = "application/octet-stream";
//context.Response.ContentType = "audio/mpeg";
Response.AddHeader("Content-Disposition", "attachment;
filename=" + filename);
MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = fileTable };
MongoGridFS fs = new MongoGridFS(DB, fsSetting);
MongoGridFSFileInfo gfInfo = new MongoGridFSFileInfo(fs, filename);
//方法一,很简洁
fs.Download(Response.OutputStream, filename);
Response.End();
}
通过这几段代码,我们就轻松的完成MongoDB数据的文件读取操作。
小结
真的的是难的不会回的不难啊,其实之前自己在研究这个东西的时候方向出错了,原先一直认为MongoDB数据库
中存放文件的时候都是以字节流的方式存进去的,直到前几天偶尔看到老徐的MongoDB里面竟然现实的一个完成的图
片的样子,当时自己非常的吃惊。就赶紧问了问。原来她在存文件的时候直接添加的。这样自己才明白过来,原来自
己之前理解的非常的狭窄。所以当我们遇到实在不会做的东西的时候,需要出去走走,不要一味的钻进去研究,可能
在偶然的机会你就来了灵感,分分钟钟就可以实现。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 由浅入深理解AOP
- 如何寻找情感问答App的分析切入点
- 继续努力,自主学习家庭Day135(20181015)
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 如何在Mac中的文件选择框中打开系统隐藏文件夹