我正在开发一个以 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/