MongoDb.GridFS.FindOneById返回null

时间:2018-03-13 17:18:29

标签: c# mongodb mongodb-.net-driver gridfs

我正在使用以下代码将图像上传到服务器:

public ActionResult AttachImage(HttpPostedFileBase file)
{
   var options = new MongoGridFSCreateOptions
   {
      Id = ObjectId.GenerateNewId().ToString(),
      ContentType = file.ContentType
    };
    Context.Database.GridFS.Upload(file.InputStream, file.FileName, options);
    return RedirectToAction("Index");
}

并尝试获取如下文件:

public ActionResult GetImage(string id)
{
   var image = Context.Database.GridFS.FindOneById(new ObjectId(id));
   if(image == null)
   {
      return HttpNotFound();
   }
   return File(image.OpenRead(), image.ContentType);
}

上传后,我可以看到数据库中的文件,但是当我尝试将其加载为

Context.Database.GridFS.FindOneById(new ObjectId(id));

我总是在做空。你能告诉我我做错了吗?

public class DbContext
{
    public MongoDatabase Database;
    public DbContext()
    {
        var client = new MongoClient(Properties.Settings.Default.ConnectionString);
        var server = client.GetServer();
        Database = server.GetDatabase(Properties.Settings.Default.DatabaseName);
    }
}

mongocsharpdriver 2.5.0 mongo server 3.6

1 个答案:

答案 0 :(得分:0)

原来我错误地通过Id搜索了文件。

而不是

var image = Context.Database.GridFS.FindOneById(new ObjectId(id));

我应该使用

var image = Context.Database.GridFS.FindOneById(id);

我使用了以前版本驱动程序的示例代码,但在2.5中我们不需要使用

 new ObjectId(id)