提问人:Neo 提问时间:4/22/2019 更新时间:4/23/2019 访问量:283
如何从GridFS中检索图像列表?
How to retrieve list of images from GridFS?
问:
这是为了提交一个使用 ajax 拉取数据的视图。
我正在尝试从 MongoDb GridFS 存储桶中检索图像。下载操作有效。但问题是,我使用的视图模型具有:
public User User { get; set; }
public List<IFormFile> ImageUpload { get; set; }
我从数据库上下文中获取用户,并使用它来识别存储桶中的图像,并希望将其从控制器返回到视图。
以下是我的控制器代码:
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,而我试图输入的不是列表,因此我收到错误。
我应该写什么来解决这个问题?这种方法不好吗? 请帮忙。 谢谢。
答:
0赞
Edward
4/23/2019
#1
尝试如下代码:
var UserImgBinder = new UserImgBinder
{
User = _context.User.Where(x => x.UserId.Equals(id)).FirstOrDefault(),
ImageUpload = new List<IFormFile> {
file
}
};
评论
0赞
Neo
4/24/2019
谢谢伙计。该问题已解决。介意我问你一个问题吗?上面的代码,当 id=0 时,将显示新用户添加视图,否则它将拾取 id 并显示编辑视图。我所期望的是上面的代码神奇地将 IFormfile 发布回我尝试编辑用户数据的视图,并且文件名将显示在上传按钮旁边。你能告诉我我错过了什么吗?发射
0赞
Edward
4/25/2019
@Neo 无法从服务器端发送到客户端。IFormfile
评论