我正在开发一个以 mongodb 作为后端的网络应用程序。我想让用户将图片上传到他们的个人资料中,例如链接的个人资料图片。我正在使用带有 MVC2 的 aspx 页面,并且我读到 GridFs 库用于将大型文件类型存储为二进制文件。我到处寻找如何完成此操作的线索,但 mongodb 没有任何 C# api 或 GridFs C# 的文档。我感到困惑和困惑,真的可以使用另一组大脑。
有人知道如何实际实现一个文件上传控制器,将用户上传的图像存储到 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);
}
}
}
Results:
File:
块集合:
希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)