如何从GridFS检索图像列表?

时间:2019-04-22 11:44:04

标签: c# .net asp.net-web-api asp.net-core asp.net-core-mvc

这是提交使用ajax提取数据的视图。

我正在尝试从MongoDb GridFS存储桶中检索图像。下载操作有效。但是问题是,我使用的视图模型具有:

public User User { get; set; }
public List<IFormFile> ImageUpload { get; set; }

我从db上下文中获取用户,并使用它来识别存储桶中的图像,并希望将其从控制器返回到视图中。

以下是我的控制器代码:

public IActionResult AddEditUser(int id = 0)
        {
            if (id == 0)
            {
                return View(new UserImgBinder());
            }
            else
            {
                var userImageId = _context.User.Where(x => x.UserId.Equals(id)).Select(y => y.AvatarImg).ToString();
                var stream = ContextNew.ImagesBucket.OpenDownloadStream(new ObjectId(userImageId.ToBson()));
                var contentType = stream.FileInfo.Metadata["ContentType"].AsString;
                //File(stream, contentType);
                IFormFile file = new  FormFile(stream, 0, stream.Length,"",""); 


                var UserImgBinder = new UserImgBinder
                {
                    User = _context.User.Where(x => x.UserId.Equals(id)).FirstOrDefault(),
                    ImageUpload = file
            };
                return View(UserImgBinder);
            }

        }

由于ImageUpload的类型为List,而我要提供的内容不是列表,因此出现错误。

我应该写些什么来解决这个问题?这种方法不好吗? 请帮忙。 谢谢。

1 个答案:

答案 0 :(得分:0)

尝试如下代码:

var UserImgBinder = new UserImgBinder
{
    User = _context.User.Where(x => x.UserId.Equals(id)).FirstOrDefault(),
    ImageUpload = new List<IFormFile> {
                file
            }
};