c# - MongoDB GridFs with C#,如何存储图片等文件?

我正在开发一个以 mongodb 作为后端的网络应用程序。我想让用户将图片上传到他们的个人资料中,就像链接的个人资料图片一样。我正在使用带有 MVC2 的 aspx 页面,并且我读到 GridFs 库用于将大文件类型存储为二进制文件。我到处寻找有关如何完成的线索,但 mongodb 没有任何关于 C# api 或 GridFs C# 的文档。我很困惑和困惑,真的可以使用另一套大脑。

任何人都知道如何实际实现一个文件上传 Controller ,将用户上传的图像存储到 mongodb 集合中?谢谢一百万!

我已经尝试过这种变体,但无济于事。

Database db = mongo.getDB("Blog");
GridFile file = new GridFile(db);
file.Create("image.jpg");

var images = db.GetCollection("images");
images.Insert(file.ToDocument());

最佳答案

下面的例子展示了如何保存文件并从gridfs读回(使用官方mongodb驱动):

 var server = MongoServer.Create("mongodb://localhost:27020");
 var database = server.GetDatabase("tesdb");

 var fileName = "D:\\Untitled.png";
 var newFileName = "D:\\new_Untitled.png";
 using (var fs = new FileStream(fileName, FileMode.Open))
 {
    var gridFsInfo = database.GridFS.Upload(fs, fileName);
    var fileId = gridFsInfo.Id;

    ObjectId oid= new ObjectId(fileId);
    var file = database.GridFS.FindOne(Query.EQ("_id", oid));

    using (var stream = file.OpenRead())
    {
       var bytes = new byte[stream.Length];
       stream.Read(bytes, 0, (int)stream.Length);
       using(var newFs = new FileStream(newFileName, FileMode.Create))
       {
         newFs.Write(bytes, 0, bytes.Length);
       } 
    }
 }

结果:

文件:

block 集合:

希望对您有所帮助。

https://stackoverflow.com/questions/4988436/

相关文章:

node.js - TypeError : db. 集合不是函数

mongodb - 存储在 MongoDB 中的数组是否保持顺序?

mongodb - 检查当前与 MongoDb 的连接数

collections - MongoDB一次查询多个集合

javascript - 在 MongoDB 和 Mongoose 中执行全文搜索的最佳方法

node.js - Mongodb的僧侣vs Mongoose

mongodb - 将 "working set"放入 MongoDB 的 RAM 是什么意思?

java - “字段需要一个无法找到的 bean。”使用mongodb的错误spring restf

mongodb - MongoDB 3.0 中的“无法取消链接套接字文件”错误

mongodb - 更新 MongoDB 中精确元素数组中的字段