gpt4 book ai didi

c# - 在 MonoDevelop 中使用带有官方 C# 驱动程序的 GridFS

转载 作者:可可西里 更新时间:2023-11-01 09:56:24 24 4
gpt4 key购买 nike

我在 PC-BSD 10.1 上使用 MonoDevelop,并使用 MongoDB 3.2。我从 Nuget 下载了 MongoDB.Driver (+Bson& Core)。我可以进行基本的读写操作,并试图通过遵循似乎是 StackOverflow 的最新示例来让 GridFS 工作:

MongoDB GridFs with C#, how to store files such as images?

首先,我的系统无法识别(看似)静态的 MongoServer 类,因此我切换到 MognoClient 来获取数据库。然后我得到以下内容:

“类型 MongoDB.Driver.IMongoDatabase' 不包含 GridFS' 的定义,并且找不到类型为 GridFS' 的扩展方法 MongoDB.Driver.IMongoDatabase' .”

using System;
using System.IO;
using MongoDB;
using MongoDB.Driver;
using MongoDB.Driver.Core;
using MongoDB.Bson;
//using MongoDB.Driver.GridFS; -> an attempt to use the legacy driver.


namespace OIS.Objektiv.SocketServer
{
public class Gridfs
{
public Gridfs ()
{

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

// var client = new MongoClient("mongodb://localhost:27017");
// var database = client.GetDatabase("test");

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);
}
}
}
}
}
}

我犯了什么愚蠢的错误? GridFS 是否有我缺少的依赖项?这应该工作! :(

丁斯代尔

最佳答案

对于驱动程序版本 2.2,您必须下载一个名为 MongoDB.Driver.GridFS 的单独 NuGet 包。

你可以这样使用它:

IMongoDatabase database;

var bucket = new GridFSBucket(database, new GridFSOptions
{
BucketName = "videos",
ChunkSizeBytes = 1048576, // 1MB
WriteConcern = WriteConcern.Majority,
ReadPreference = ReadPeference.Secondary
});

IGridFSBucket bucket;
bytes[] source;
var options = new GridFSUploadOptions
{
ChunkSizeBytes = 64512, // 63KB
Metadata = new BsonDocument
{
{ "resolution", "1080P" },
{ "copyrighted", true }
}
};

var id = bucket.UploadFromBytes("filename", source, options);

Here the full doc .

关于c# - 在 MonoDevelop 中使用带有官方 C# 驱动程序的 GridFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30147919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com