怎样查看保存到mongobd的文件_Mongodb存储读取Word文档

本文介绍如何利用MongoDB存储和读取Word文档。通过将Word文档的二进制数据保存到MongoDB的BSON文档中,实现无损存储。提供了C#代码示例,包括保存和读取Word文档的详细步骤。
摘要由CSDN通过智能技术生成

在为人事系统做操作日志功能时,为了保证已经打印的信函可以还原,需要在每次打印信函时记录Word信函的内容。

SQL Server只能记录信函的文字内容,那信函的页面布局、字体格式等其他内容如何存储呢?此时Mongodb闪亮登场,由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结构中。取的时候再以二进制格式取,这样文档就能实现无损保存。

下面是我已经验证成功,存储Word到Mongo,然后从Mongo读取Word的代码,在此和大家分享分享。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

using MongoDB.Bson;

using MongoDB.Driver;

namespace Mongodb

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

Init();

}

//数据库连接字符串

const string strconn = "mongodb://127.0.0.1:27017";

//数据库名称

const string dbName = "test";

MongoServer server;

MongoDatabase db;

void Init()

{

//创建数据库链接

server = MongoDB.Driver.MongoServer.Create(strconn);

//获得数据库

db = server.GetDatabase(dbName);

}

private void btnSave_Click(object sender, EventArgs e)

{

SaveDocToMongo(@"d:\quwenzhe.docx");

}

private void btnShow_Click(object sender, EventArgs e)

{

GetDocFromMongo(@"E:\newquwenzhe.doc");

}

///

/// 保存Word到Mongo

///

/// 需要保存的文件名

private void SaveDocToMongo(string filename)

{

byte[] byteDoc = File.ReadAllBytes(filename);

BsonDocument doc = new BsonDocument();

doc["id"] = "1";

doc["content"] = byteDoc;

MongoCollection col = db.GetCollection("doc");

col.Save(doc);

}

///

/// 将Mongo中的Word保存到本地

///

/// 保存到本地的文件名

private void GetDocFromMongo(string filename)

{

MongoCollection col = db.GetCollection("doc");

var query = new QueryDocument { { "id", "1" } };

var result = col.FindAs(query);

byte[] buff = (byte[])((BsonDocument)result.ToList()[0]).GetValue("content");

FileStream fs;

FileInfo fi = new FileInfo(filename);

fs = fi.OpenWrite();

fs.Write(buff, 0, buff.Length);

fs.Close();

}

}

}   执行完存储操作后,大家可以在MongoVUE中查看存储的二进制数据,如下图所示:

f032f036b307da6bdfa3905cb7012875.png

好了,时间不早了,我得小憩一下,准备下午的软考,谢谢大家观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值