Mongodb存储读取Word文档
程序员文章站
2022-05-10 11:43:07
...
在为人事系统做操作日志功能时,为了保证已经打印的信函可以还原,需要在每次打印信函时记录Word信函的内容。 SQL Server只能记录信函的文字内容,那信函的页面布局、字体式等其他内容如何存储呢?此时Mongodb闪亮登场,由于MongoDB的文档结构为BJSON式(BJS
在为人事系统做操作日志功能时,为了保证已经打印的信函可以还原,需要在每次打印信函时记录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"); } ///执行完存储操作后,大家可以在MongoVUE中查看存储的二进制数据,如下图所示:/// 保存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(); } } }
下载地址:http://pan.baidu.com/s/1pJ5DTer。
好了,时间不早了,我得小憩一下,准备下午的软考,谢谢大家观看。
上一篇: 修改MySQL的默认密码
下一篇: html post信息出现&符号如何转义
推荐阅读
-
C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word
-
Java 添加、读取、修改、删除Word文档属性
-
在Word中如何快速另存为将文档重新存储按F12键便可知晓
-
AspNet 读取Word文档信息
-
使用python批量读取word文档并整理关键信息到excel表格的实例
-
python读取word文档,插入mysql数据库的示例代码
-
荐 Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等
-
python读取word文档的方法
-
Java如何实现读取txt文件内容并生成Word文档
-
分布式文档存储数据库之MongoDB备份与恢复的实践详解