C# 如何将上载的图像保存到MongoDB集合并检索它

C# 如何将上载的图像保存到MongoDB集合并检索它,c#,asp.net,mongodb,save-image,C#,Asp.net,Mongodb,Save Image,我想将上传的文件(如用户的头像图像)保存到MongoDB中的用户集合中,我想步骤如下: 用户上传图片 使用FileHandler(IHttpHandler,Asp.net)在web服务器中接受文件流 然后,我将该文件设置为二进制文件,并将其设置为用户类对象 最后保存对象,这样用户集合将获得文件二进制数据 我说的对吗?你能给我一些线索吗?你应该使用GridFS来做这件事——你没有理由担心文件太大或太小而无法理解。GridFS设计用于存储文件,因此您应该使用它 如果需要,您可以始终将对GridFS文

我想将上传的文件(如用户的头像图像)保存到MongoDB中的用户集合中,我想步骤如下:

  • 用户上传图片
  • 使用FileHandler(IHttpHandler,Asp.net)在web服务器中接受文件流
  • 然后,我将该文件设置为二进制文件,并将其设置为用户类对象
  • 最后保存对象,这样用户集合将获得文件二进制数据

  • 我说的对吗?你能给我一些线索吗?

    你应该使用GridFS来做这件事——你没有理由担心文件太大或太小而无法理解。GridFS设计用于存储文件,因此您应该使用它

    如果需要,您可以始终将对GridFS文件的引用存储在普通MongoDB文档中,然后在需要时将其从GridFS中加载


    请参阅此线程:

    根据Mongo grid fs文档。如果您的文件都小于16 MB BSON文档大小限制,请考虑将每个文件存储在单个文档中,而不是使用GRIDFS。您可以使用BinData数据类型来存储二进制数据。有关使用BinData的详细信息,请参阅您的驱动程序文档。

    您使用的客户端语言是什么(我猜是C#或其他什么,但我不确定)?是的,我使用C#,我知道GridFs可能是一种解决方案,但它只是为了大文件存储和方便使用碎片或复制的东西,我在谷歌上搜索,找不到我面临的类似情况。我在浏览器中将二进制数据转换为img时得到了一个很好的参考:
    GridFS
    不仅仅用于存储大文件。如果将文件直接存储在用户文档中,需要记住的一点是,每次为用户查询时,您都必须加载和传输这些数据,而不仅仅是在需要时。相反,当您只需要文件时,您必须加载用户文档的其余部分。是的,我认为您是对的。我的想法是一次完整地检索用户数据,包括avator二进制文件,然后查看页面获取模型并将数据合并为img标记--我认为这是错误的,你不能通过html协议传输二进制数据,为了处理这个额外的工作,应该完成,将二进制文件转换为可能存储在隐藏输入中的文本,下一步也是很艰难的,把这些文字变成一个img对象,这个可行性很模糊。我认为另一个解决办法是使用额外的收集来存储图像,因为@dcrosta说,顺便说一句,thanx