Я разрабатываю веб-приложение с mongodb как мой бэкенд. Я хотел бы сделать, чтобы пользователи загрузили картинки к своим профилям как связанный - в рис. профиля. Я использую aspx страницу с MVC2, и я читал, что библиотекой GridFs пользуются для хранения больших типов файлов как двоичных файлов. Я везде искал подсказки как, как это сделано, но mongodb не имеет никакой документации для API C# или 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());
Ответы выше должны скоро устареть теперь, когда 2,1 RC 0 драйверов были выпущены.
способ работать с файлами в v2.1 MongoDB с GridFS может теперь быть сделан этот путь:
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.GridFS;
using System.IO;
using System.Threading.Tasks;
namespace MongoGridFSTest
{
class Program
{
static void Main(string[] args)
{
var client = new MongoClient("mongodb://localhost");
var database = client.GetDatabase("TestDB");
var fs = new GridFSBucket(database);
var id = UploadFile(fs);
DownloadFile(fs, id);
}
private static ObjectId UploadFile(GridFSBucket fs)
{
using (var s = File.OpenRead(@"c:\temp\test.txt"))
{
var t = Task.Run<ObjectId>(() => { return
fs.UploadFromStreamAsync("test.txt", s);
});
return t.Result;
}
}
private static void DownloadFile(GridFSBucket fs, ObjectId id)
{
//This works
var t = fs.DownloadAsBytesByNameAsync("test.txt");
Task.WaitAll(t);
var bytes = t.Result;
//This blows chunks (I think it's a driver bug, I'm using 2.1 RC-0)
var x = fs.DownloadAsBytesAsync(id);
Task.WaitAll(x);
}
}
}
Это взято от разности на тестах драйвера C# здесь